一般流程 客户端向服务端发送请求,服务端处理后返回内容给客户端,客户端处理
创建HttpClient对象,并设置响应的参数。
HttpClient httpClient = new HttpClient();
// 设置 HttpClient 接收 Cookie,用与浏览器一样的策略
httpClient.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
// 设置 默认的超时重试处理策略
httpClient.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());
// 设置 连接超时时间
httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(TIMEOUT_CONNECTION);
// 设置 读数据超时时间
httpClient.getHttpConnectionManager().getParams().setSoTimeout(TIMEOUT_SOCKET);
// 设置 字符集
httpClient.getParams().setContentCharset(UTF_8);
Get请求方式
创建GetMethod对象,并设置响应的参数。
GetMethod httpGet = new GetMethod(url);
// 设置 请求超时时间
httpGet.getParams().setSoTimeout(TIMEOUT_SOCKET);
httpGet.setRequestHeader("Host", URLs.HOST);
httpGet.setRequestHeader("Connection","Keep-Alive");
httpGet.setRequestHeader("Cookie", cookie);
httpGet.setRequestHeader("User-Agent", userAgent);
Post请求方式
创建PostMethod对象,并设置响应的参数。
PostMethod httpPost = new PostMethod(url);
// 设置 请求超时时间
httpPost.getParams().setSoTimeout(TIMEOUT_SOCKET);
httpPost.setRequestHeader("Host", URLs.HOST);
httpPost.setRequestHeader("Connection","Keep-Alive");
httpPost.setRequestHeader("Cookie", cookie);
httpPost.setRequestHeader("User-Agent", userAgent);
以上与Get看似一直,不同处在于get的参数是写在url里面,而post写在属性里面
httpPost.setRequestEntity(new MultipartRequestEntity(parts,httpPost.getParams()));
用 HttpClinet 生成的对象来执行 GetMethod 生成的 Get 方法,并处理http的响应状态码
if (statusCode != HttpStatus.SC_OK) {
throw AppException.http(statusCode);
}
处理服务器端返回的内容,并关闭连接
//处理返回的内容,这只是一种方式
String responseBody = httpGet.getResponseBodyAsString();
//关闭连接
httpGet.releaseConnection();
httpClient = null;