Http协议的封装:
使用http协议有request和response这两个主要的域,下边是Http协议封装的结构图
(1)HttpRequestInter.java:作为request域对象,应该可以获得客户端请求的地址和httpRequest对象,这样的话才可以获得客户端请求的参数等信息;另外public HttpResponseInter request() throws Exception; 使用这个方法,是当执行完request请求之后,返回一个response对象(这里用接口表示)
/**
* 请求的接口
* @author xuliugen
*/
public interface HttpRequestInter {
//获得httpRequest
public HttpUriRequest getHttpRequest();
//获得http请求的url地址
public String getRequestURL();
//请求服务端:要返回一个response对象
public HttpResponseInter request() throws Exception;
}
(2)HttpResponseInter.java作为和(1)中相对应的response对象,应该具有的方法:获取返回的状态码、获取返回的流、获取返回返回的string数据等,下边的方法就是获取相应的数据
/**
* 响应的接口
* @author xuliugen
*/
public interface HttpResponseInter {
//返回状态码
public int statusCode();
// 向客户端返回流数
public InputStream getResponseStream() throws IllegalStateException,IOException;
//向客户端返回字节数组
public byte[] getResponseStreamAsByte() throws IOException;
//向客户端返回JSON数据
public String getResponseStreamAsString() throws ParseException, IOException;
}
(3)这是HttpRequestImpl.java接口的实现类,我们可以看到我们不但实现了HttpRequestInter接口还实现了ResponseHandler 第二个就是用于当执行完request请求之后需要返回的数据,存放在一个response的Handler中。
public class HttpRequestImpl implements HttpRequestInter,ResponseHandler {
protected HttpUriRequest httpUriRequest;// 用于获取request的url地址
private AbstractHttpClient abstractHttpClient; // client对象
// 构造犯法
public HttpRequestImpl(AbstractHttpClient httpClient) {
this.abstractHttpClient = httpClient;
}
// get方法
public HttpUriRequest getHttpRequest() {
return httpUriRequest;
}
//获得request的url
public String getRequestURL() {
return httpUriRequest.getURI().toString();
}
//执行request请求,并返回??个response对象接口
public HttpResponseInter request() throws Exception {
return abstractHttpClient.execute(httpUriRequest, this);//传入的ResponseHandler对象
}
/**
* 继承ResponseHandler接口要实现的方法
* 执行完毕之后对response对象的处理接口
*/
public HttpResponseInter handleResponse(HttpResponse response)throws ClientProtocolException, IOException {
//返回实现HttpResponseInter的类:返回给一个response接口
HttpResponseInter httpResponseInter = new HttpResponseImpl(response); //返回的时候需要response
return httpResponseInter;
}
}