HttpClient依賴jar包:
<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.2</version> </dependency>
寫一個發送請求的工具類HttpUtil
package com.bs.utils; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URI; import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.NameValuePair; import org.apache.http.ParseException; import org.apache.http.StatusLine; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.utils.URIBuilder; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; import org.apache.http.protocol.HTTP; import org.apache.http.util.EntityUtils; import org.apache.log4j.Logger; /** * HttpClient工具類 */ public class HttpUtil { private static Logger logger = Logger.getLogger(HttpUtil.class); /** * get請求 * @return */ public static String doGet(String url) { try { HttpClient client = new DefaultHttpClient(); //發送get請求 HttpGet request = new HttpGet(url); HttpResponse response = client.execute(request); /**請求發送成功,並得到響應**/ if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { /**讀取服務器返回過來的json字符串數據**/ String strResult = EntityUtils.toString(response.getEntity()); return strResult; } } catch (IOException e) { e.printStackTrace(); } return null; } /**get請求(用於key-value格式的參數,且帶有header請求頭) * @param url * @param map 請求的參數map<key,value>鍵值對 * @param headerKey headers Key * @param headerValue headers Value * @return */ public static String doGet(String url,Map<String, String> map,String headerKey,String headerValue) { // 獲取連接客戶端工具 CloseableHttpClient httpClient = HttpClients.createDefault(); String entityStr = null; CloseableHttpResponse response = null; try { /* * 由於GET請求的參數都是拼裝在URL地址后方,所以我們要構建一個URL,帶參數 */ URIBuilder uriBuilder = new URIBuilder(url); /** 第一種添加參數的形式 */ /*uriBuilder.addParameter("name", "root"); uriBuilder.addParameter("password", "123456");*/ for (Map.Entry<String, String> entry : map.entrySet()) { uriBuilder.addParameter(entry.getKey(), entry.getValue()); } /** 第二種添加參數的形式 */ /* List<NameValuePair> list = new LinkedList<>(); BasicNameValuePair param1 = new BasicNameValuePair("startTime", "2019-1-1 00:00:00"); BasicNameValuePair param2 = new BasicNameValuePair("endTime", "2019-1-9 00:00:00"); list.add(param1); list.add(param2); uriBuilder.setParameters(list);*/ // 根據帶參數的URI對象構建GET請求對象 HttpGet httpGet = new HttpGet(uriBuilder.build()); /* * 添加請求頭信息 */ // 瀏覽器表示 httpGet.addHeader("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)"); // 傳輸的類型 httpGet.addHeader("Content-Type", "application/x-www-form-urlencoded"); //header的<key,value> httpGet.setHeader(headerKey, headerValue); // 執行請求 response = httpClient.execute(httpGet); // 獲得響應的實體對象 HttpEntity entity = response.getEntity(); // 使用Apache提供的工具類進行轉換成字符串 entityStr = EntityUtils.toString(entity, "UTF-8"); } catch (ClientProtocolException e) { System.err.println("Http協議出現問題"); e.printStackTrace(); } catch (ParseException e) { System.err.println("解析錯誤"); e.printStackTrace(); } catch (URISyntaxException e) { System.err.println("URI解析異常"); e.printStackTrace(); } catch (IOException e) { System.err.println("IO異常"); e.printStackTrace(); } finally { // 釋放連接 if (null != response) { try { response.close(); httpClient.close(); } catch (IOException e) { System.err.println("釋放連接出錯"); e.printStackTrace(); } } } return entityStr; } /** * post請求(用於key-value格式的參數) * @param url * @param params * @return */ public static String doPost(String url, Map params){ BufferedReader in = null; try { // 定義HttpClient HttpClient client = new DefaultHttpClient(); // 實例化HTTP方法 HttpPost request = new HttpPost(); request.setURI(new URI(url)); //設置參數 List<NameValuePair> nvps = new ArrayList<NameValuePair>(); for (Iterator iter = params.keySet().iterator(); iter.hasNext();) { String name = (String) iter.next(); String value = String.valueOf(params.get(name)); nvps.add(new BasicNameValuePair(name, value)); //System.out.println(name +"-"+value); } request.setEntity(new UrlEncodedFormEntity(nvps,HTTP.UTF_8)); HttpResponse response = client.execute(request); int code = response.getStatusLine().getStatusCode(); if(code == 200){ //請求成功 in = new BufferedReader(new InputStreamReader(response.getEntity() .getContent(),"utf-8")); StringBuffer sb = new StringBuffer(""); String line = ""; String NL = System.getProperty("line.separator"); while ((line = in.readLine()) != null) { sb.append(line + NL); } in.close(); return sb.toString(); } else{ // System.out.println("狀態碼:" + code); return null; } } catch(Exception e){ e.printStackTrace(); return null; } } /** * post請求(用於請求json格式的參數) * @param url * @param params * @return */ public static String doPost(String url, String params) throws Exception { CloseableHttpClient httpclient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost(url);// 創建httpPost httpPost.setHeader("Accept", "application/json"); httpPost.setHeader("Content-Type", "application/json"); String charSet = "UTF-8"; StringEntity entity = new StringEntity(params, charSet); httpPost.setEntity(entity); CloseableHttpResponse response = null; try { response = httpclient.execute(httpPost); StatusLine status = response.getStatusLine(); int state = status.getStatusCode(); if (state == HttpStatus.SC_OK) { HttpEntity responseEntity = response.getEntity(); String jsonString = EntityUtils.toString(responseEntity); return jsonString; } else{ logger.error("請求返回:"+state+"("+url+")"); } } finally { if (response != null) { try { response.close(); } catch (IOException e) { e.printStackTrace(); } } try { httpclient.close(); } catch (IOException e) { e.printStackTrace(); } } return null; } }