HttpComponents 也就是以前的httpclient项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端/服务器编程工具包,并且它支持 HTTP 协议最新的版本和建议。不过现在的 HttpComponents 包含多个子项目,有:
HttpComponents Core
- HttpComponents Client
- HttpComponents AsyncClient
- Commons HttpClient
以下列出的是 HttpClient 提供的主要的功能,要知道更多详细的功能可以参见 HttpClient 的主页。
实现了所有 HTTP 的方法(GET,POST,PUT,HEAD 等)
支持自动转向
支持 HTTPS 协议
支持代理服务器等
支持Cookie
HttpClient 示例代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
DefaultHttpClient httpclient = new DefaultHttpClient();
try {
HttpGet httpget = new HttpGet( "https://portal.sun.com/portal/dt" );
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
System.out.println( "Login form get: " + response.getStatusLine());
EntityUtils.consume(entity);
System.out.println( "Initial set of cookies:" );
List<Cookie> cookies = httpclient.getCookieStore().getCookies();
if (cookies.isEmpty()) {
System.out.println( "None" );
} else {
for ( int i = 0 ; i < cookies.size(); i++) {
System.out.println( "- " + cookies.get(i).toString());
}
}
HttpPost httpost = new HttpPost( "https://portal.sun.com/amserver/UI/Login?" +
"org=self_registered_users&" +
"goto=/portal/dt&" +
"gotoOnFail=/portal/dt?error=true" );
List <NameValuePair> nvps = new ArrayList <NameValuePair>();
nvps.add( new BasicNameValuePair( "IDToken1" , "username" ));
nvps.add( new BasicNameValuePair( "IDToken2" , "password" ));
httpost.setEntity( new UrlEncodedFormEntity(nvps, Consts.UTF_8));
response = httpclient.execute(httpost);
entity = response.getEntity();
System.out.println( "Login form get: " + response.getStatusLine());
EntityUtils.consume(entity);
System.out.println( "Post logon cookies:" );
cookies = httpclient.getCookieStore().getCookies();
if (cookies.isEmpty()) {
System.out.println( "None" );
} else {
for ( int i = 0 ; i < cookies.size(); i++) {
System.out.println( "- " + cookies.get(i).toString());
}
}
} finally {
// When HttpClient instance is no longer needed,
// shut down the connection manager to ensure
// immediate deallocation of all system resources
httpclient.getConnectionManager().shutdown();
} |