HttpComponents 也就是之前的httpclient項目,能夠用來提供高效的、最新的、功能豐富的支持 HTTP 協議的客戶端/服務器編程工具包,而且它支持 HTTP 協議最新的版本和建議。不過如今的 HttpComponents 包含多個子項目,有:
java
HttpComponents Coreapache
HttpComponents Client編程
HttpComponents AsyncClient瀏覽器
Commons HttpClient
服務器
如下列出的是 HttpClient 提供的主要的功能,要知道更多詳細的功能能夠參見 HttpClient 的主頁。工具
實現了全部 HTTP 的方法(GET,POST,PUT,HEAD 等)post
支持自動轉向ui
支持 HTTPS 協議google
支持代理服務器等spa
支持Cookie
以前用的HttpClient的方法都失效了,好比 httpclinet =new DefaultHttpClient(); 不知道爲啥包裏80%的類都失效了,老是以爲建立一個httpclient實例會比較麻煩,記不住。因此整理了一下新的方式簡單使用。
簡單使用
導入jar包
<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.2</version> </dependency>
get請求獲取響應
CloseableHttpClient httpClient= HttpClients.createDefault(); HttpGet httpget = new HttpGet("http://www.baidu.com"); CloseableHttpResponse response = httpClient.execute(httpget); HttpEntity httpEntity= response.getEntity(); String strResult= EntityUtils.toString(httpEntity);
post請求獲取響應
HttpPost httpost = new HttpPost("https://www.baidu.com"); 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));
HttpClient提供URIBuilder工具類來簡化URIs的建立和修改過程。
URI uri = new URIBuilder() .setScheme("http") .setHost("www.google.com") .setPath("/search") .setParameter("q", "httpclient") .setParameter("btnG", "Google Search") .setParameter("aq", "f") .setParameter("oq", "") .build(); HttpGet httpget = new HttpGet(uri); System.out.println(httpget.getURI())
模擬瀏覽器請求
httpget.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0");