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");