HttpComponents也就是以前的httpclient项目,可以用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端/服务器编程工具包,并且它支持HTTP协议最新的版本和建议。不过现在的HttpComponents包含多个子项目,有:
HttpComponentsCore
HttpComponentsClientHttpComponentsAsyncClientCommonsHttpClient以下列出的是HttpClient提供的主要的功能,要知道更多详细的功能可以参见HttpClient的主页。
实现了所有HTTP的方法(GET,POST,PUT,HEAD等)
支持自动转向
支持HTTPS协议
支持代理服务器等
支持Cookie
HttpClient示例代码:
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 resourceshttpclient.getConnectionManager().shutdown();}
评论