httpclient介绍与使用

什么是httpclient
  HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,而且它支持 HTTP 协议最新的版本和建议。
下载地址:http://hc.apache.org/
使用范例web

public class HttpClientTest { @Test public void doGet() throws Exception { //建立一个httpclient对象
        CloseableHttpClient httpClient = HttpClients.createDefault(); //建立一个GET对象
        HttpGet get = new HttpGet("http://www.sogou.com"); //执行请求
        CloseableHttpResponse response = httpClient.execute(get); //取响应的结果
        int statusCode = response.getStatusLine().getStatusCode(); System.out.println(statusCode);//返回200
        HttpEntity entity = response.getEntity(); String string = EntityUtils.toString(entity, "utf-8"); System.out.println(string);//返回sogou主页的页面代码 //关闭httpclient
 response.close(); httpClient.close(); } @Test public void doGetWithParam() throws Exception{ CloseableHttpClient httpClient = HttpClients.createDefault(); //建立一个uri对象
        URIBuilder uriBuilder = new URIBuilder("http://www.sogou.com/web"); uriBuilder.addParameter("query", "花千骨"); HttpGet get = new HttpGet(uriBuilder.build()); CloseableHttpResponse response = httpClient.execute(get); int statusCode = response.getStatusLine().getStatusCode(); System.out.println(statusCode); HttpEntity entity = response.getEntity(); String string = EntityUtils.toString(entity, "utf-8"); System.out.println(string); response.close(); httpClient.close(); } @Test public void doPost() throws Exception { CloseableHttpClient httpClient = HttpClients.createDefault(); //建立一个post对象
        HttpPost post = new HttpPost("http://localhost:8082/httpclient/post.action"); //执行post请求
        CloseableHttpResponse response = httpClient.execute(post); String string = EntityUtils.toString(response.getEntity()); System.out.println(string); response.close(); httpClient.close(); } @Test public void doPostWithParam() throws Exception{ CloseableHttpClient httpClient = HttpClients.createDefault(); //建立一个post对象 
        HttpPost post = new HttpPost("http://localhost:8082/httpclient/post.action"); //建立一个Entity。模拟一个表单
        List<NameValuePair> kvList = new ArrayList<>(); kvList.add(new BasicNameValuePair("username", "张三")); kvList.add(new BasicNameValuePair("password", "123")); //包装成一个Entity对象 
        StringEntity entity = new UrlEncodedFormEntity(kvList, "utf-8"); //设置请求的内容 
 post.setEntity(entity); //执行post请求
        CloseableHttpResponse response = httpClient.execute(post); String string = EntityUtils.toString(response.getEntity()); System.out.println(string); response.close(); httpClient.close(); } }

 封装工具类apache

public class HttpClientUtil { public static String doGet(String url, Map<String, String> param) { // 建立Httpclient对象
        CloseableHttpClient httpclient = HttpClients.createDefault(); String resultString = ""; CloseableHttpResponse response = null; try { // 建立uri
            URIBuilder builder = new URIBuilder(url); if (param != null) { for (String key : param.keySet()) { builder.addParameter(key, param.get(key)); } } URI uri = builder.build(); // 建立http GET请求
            HttpGet httpGet = new HttpGet(uri); // 执行请求
            response = httpclient.execute(httpGet); // 判断返回状态是否为200
            if (response.getStatusLine().getStatusCode() == 200) { resultString = EntityUtils.toString(response.getEntity(), "UTF-8"); } } catch (Exception e) { e.printStackTrace(); } finally { try { if (response != null) { response.close(); } httpclient.close(); } catch (IOException e) { e.printStackTrace(); } } return resultString; } public static String doGet(String url) { return doGet(url, null); } public static String doPost(String url, Map<String, String> param) { // 建立Httpclient对象
        CloseableHttpClient httpClient = HttpClients.createDefault(); CloseableHttpResponse response = null; String resultString = ""; try { // 建立Http Post请求
            HttpPost httpPost = new HttpPost(url); // 建立参数列表
            if (param != null) { List<NameValuePair> paramList = new ArrayList<>(); for (String key : param.keySet()) { paramList.add(new BasicNameValuePair(key, param.get(key))); } // 模拟表单
                UrlEncodedFormEntity entity = new UrlEncodedFormEntity(paramList); httpPost.setEntity(entity); } // 执行http请求
            response = httpClient.execute(httpPost); resultString = EntityUtils.toString(response.getEntity(), "utf-8"); } catch (Exception e) { e.printStackTrace(); } finally { try { response.close(); } catch (IOException e) { e.printStackTrace(); } } return resultString; } public static String doPost(String url) { return doPost(url, null); } public static String doPostJson(String url, String json) { // 建立Httpclient对象
        CloseableHttpClient httpClient = HttpClients.createDefault(); CloseableHttpResponse response = null; String resultString = ""; try { // 建立Http Post请求
            HttpPost httpPost = new HttpPost(url); // 建立请求内容
            StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON); httpPost.setEntity(entity); // 执行http请求
            response = httpClient.execute(httpPost); resultString = EntityUtils.toString(response.getEntity(), "utf-8"); } catch (Exception e) { e.printStackTrace(); } finally { try { response.close(); } catch (IOException e) { e.printStackTrace(); } } return resultString; } }
HttpClientUtil
相关文章
相关标签/搜索