HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的
客户端
编程工具包,并且它支持 HTTP 协议最新的版本和建议。
HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java
应用程序
需要直接通过 HTTP 协议来访问
网络资源
。虽然在 JDK 的 java net包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分
应用程序
来说,JDK 库本身提供的功能还不够丰富和灵活。
HttpClient 已经应用在很多的项目中,比如 Apache Jakarta 上很著名的另外两个开源项目 Cactus 和
HTMLUnit
都使用了 HttpClient。现在HttpClient最新版本为 HttpClient 4.2
(1)实现了所有 HTTP 的方法(GET,POST,PUT,HEAD 等)
(2)支持自动转向
(3)支持 HTTPS 协议
(4)支持代理服务器等
使用 HttpClient 需要以下 6 个步骤:
1. 创建 HttpClient 的实例
2. 创建某种连接方法的实例,在这里是 GetMethod。在 GetMethod 的
构造函数中传入待连接的地址
3. 调用第一步中创建好的实例的 execute 方法来执行第二步中创建好的 method 实例
4. 读 response
5. 释放连接。无论执行方法是否成功,都必须释放连接
6. 对得到后的内容进行处理
根据以上步骤,我们来编写用GET方法来取得某网页内容的代码。
public HttpClient httpClient = new HttpClient();
public HttpMethod() {
PostMethod post = new PostMethod(LOGIN_URL);
NameValuePair username = new NameValuePair("j_username", USER_NAME);
NameValuePair password = new NameValuePair("j_password", PASSWORD);
post.setRequestBody(new NameValuePair[] { username, password });
try {
httpClient.executeMethod(post);
System.out.println(post.getStatusLine());
System.out.println(post.getResponseBodyAsString());
} catch (HttpException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
post.releaseConnection();
}