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(); } |