HttpClient4中文教程:基础与连接管理

需积分: 8 8 下载量 151 浏览量 更新于2024-07-19 收藏 1.58MB PDF 举报
"HttpClient4中文文档" HttpClient是Apache软件基金会开发的一个Java库,用于在HTTP协议级别上进行客户端通信。这个库提供了丰富的功能,允许开发者执行HTTP请求,处理响应,并进行复杂的HTTP交互,如连接管理、状态管理和认证。中文翻译版的HttpClient文档有助于中国开发者更方便地理解和使用该库。 **第一章基础** HttpClient的基础包括执行HTTP请求和处理响应。请求由HTTP方法(如GET、POST)、URL、头信息和可选的实体内容组成。响应则包括状态码、头信息和实体内容。报文头部用于传递额外信息,而HTTP实体则承载请求或响应的数据。释放资源,如网络连接,是必要的,以避免资源泄漏。实体内容可以被消耗,生成新的内容,或通过响应控制器进行处理。异常处理是关键,HttpClient提供了幂等方法的处理,异常自动恢复,以及请求重试策略。请求的中止机制允许在执行过程中取消请求,HTTP协议拦截器可以插入自定义逻辑到请求/响应处理链中。HTTP参数用于配置请求和客户端的行为,它们有多个层次,并可以通过HTTP参数bean进行管理。 **第二章连接管理** HttpClient管理HTTP连接以优化性能和资源使用。连接参数影响连接行为,包括是否保持连接持久。持久连接允许复用已建立的TCP连接,减少握手开销。HTTP连接路由计算最佳路径,包括处理代理和安全连接。套接字工厂用于创建和配置网络连接,支持SSL/TLS加密,并可以自定义主机名验证。协议模式处理HTTP/1.1和HTTP/2的区别,而代理配置则允许通过代理服务器发送请求。HttpClient提供了不同类型的连接管理器,如简单的单连接管理器和连接池管理器,它们负责创建、复用和关闭连接。连接管理参数调整连接的生命周期,多线程执行请求时,连接收回策略和保持活动策略确保高效利用连接。 **第三章HTTP状态管理** HttpClient处理HTTP状态,尤其是cookies和会话管理。Cookie有多种版本,每个版本有不同的规范。库提供了注册表来管理不同版本的cookie策略,开发者可以选择或定制策略来满足特定需求。Cookie可以被持久化存储,以便在会话之间保持状态。HTTP状态管理与执行上下文紧密相关,可以针对每个用户或线程设置独立的状态管理。 **第四章HTTP认证** HttpClient支持HTTP认证,处理用户凭证和各种认证模式。凭证提供器用于存储和提供认证所需的凭证,如用户名和密码。认证参数允许配置不同的认证策略,注册表可以注册多种认证模式,以适应不同的服务器需求。 HttpClient4中文文档全面介绍了如何使用这个库进行HTTP通信,涵盖了从基本请求到高级特性的方方面面,对于Java开发者来说是一份宝贵的参考资料。通过深入学习和实践,开发者能够有效地利用HttpClient实现高效、安全的网络通信。
2016-05-23 上传
http工具类:package com.tpl.util; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler; import org.apache.commons.httpclient.Header; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpException; import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.httpclient.methods.GetMethod; import org.apache.commons.httpclient.params.HttpMethodParams; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; /** * */ public class HttpClientUtil { public static void main(String arg[]) throws Exception { String url = "http://xxx/project/getxxx.action"; JSONObject params= new JSONObject(); List res=new ArrayList(); JSONObject params1 = new JSONObject(); // params1.put("code", "200"); // params1.put("phone", "13240186028"); res.add(params1); params.put("result", res); String ret = doPost(url, params).toString(); System.out.println(ret); } /** httpClient的get请求方式2 * @return * @throws Exception */ public static String doGet(String url, String charset) throws Exception { /* * 使用 GetMethod 来访问一个 URL 对应的网页,实现步骤: 1:生成一个 HttpClinet 对象并设置相应的参数。 * 2:生成一个 GetMethod 对象并设置响应的参数。 3:用 HttpClinet 生成的对象来执行 GetMethod 生成的Get * 方法。 4:处理响应状态码。 5:若响应正常,处理 HTTP 响应内容。 6:释放连接。 */ /* 1 生成 HttpClinet 对象并设置参数 */ HttpClient httpClient = new HttpClient(); // 设置 Http 连接超时为5秒 httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(5000); /* 2 生成 GetMethod 对象并设置参数 */ GetMethod getMethod = new GetMethod(url); // 设置 get 请求超时为 5 秒