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
相關文章
相關標籤/搜索