什麼是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; } }