maven中所需依賴java
<!-- http --> <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore --> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcore</artifactId> <version>4.4.10</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient --> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.6</version> </dependency> <!-- alibaba json --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.13</version> </dependency>
工具類apache
package com.example.util; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.nio.charset.Charset; import java.util.HashMap; import java.util.Map; import org.apache.http.client.config.RequestConfig; 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.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; import com.alibaba.fastjson.JSONObject; public class HttpRequestUtil { private static CloseableHttpClient httpClient; private static final Map<String, Object> HRADERS = new HashMap<>(); static { PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(); cm.setMaxTotal(100); cm.setDefaultMaxPerRoute(20); cm.setDefaultMaxPerRoute(50); httpClient = HttpClients.custom().setConnectionManager(cm).build(); // headres全部接口都須要攜帶headers才能使用,若是不須要能夠不寫 HRADERS.put("abc", "abc"); } public static String get(String url) { CloseableHttpResponse response = null; BufferedReader in = null; String result = ""; try { HttpGet httpGet = new HttpGet(url); RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(30000) .setConnectionRequestTimeout(30000).setSocketTimeout(30000).build(); httpGet.setConfig(requestConfig); httpGet.setConfig(requestConfig); httpGet.addHeader("Content-type", "application/json; charset=utf-8"); httpGet.setHeader("Accept", "application/json"); // 調用得接口都須要使用這些headers for (Map.Entry<String, Object> param : HRADERS.entrySet()) { httpGet.addHeader(param.getKey(), String.valueOf(param.getValue())); } response = httpClient.execute(httpGet); in = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); StringBuffer sb = new StringBuffer(""); String line = ""; String NL = System.getProperty("line.separator"); while ((line = in.readLine()) != null) { sb.append(line + NL); } in.close(); result = sb.toString(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (null != response) { response.close(); } } catch (IOException e) { e.printStackTrace(); } } return result; } public static String post(String url, String jsonString) { CloseableHttpResponse response = null; BufferedReader in = null; String result = ""; try { HttpPost httpPost = new HttpPost(url); RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(30000) .setConnectionRequestTimeout(30000).setSocketTimeout(30000).build(); httpPost.setConfig(requestConfig); httpPost.setConfig(requestConfig); httpPost.addHeader("Content-type", "application/json; charset=utf-8"); httpPost.setHeader("Accept", "application/json"); httpPost.setEntity(new StringEntity(jsonString, Charset.forName("UTF-8"))); // 調用得接口都須要使用這些headers for (Map.Entry<String, Object> param : HRADERS.entrySet()) { httpPost.addHeader(param.getKey(), String.valueOf(param.getValue())); } response = httpClient.execute(httpPost); in = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); StringBuffer sb = new StringBuffer(""); String line = ""; String NL = System.getProperty("line.separator"); while ((line = in.readLine()) != null) { sb.append(line + NL); } in.close(); result = sb.toString(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (null != response) { response.close(); } } catch (IOException e) { e.printStackTrace(); } } return result; } // 接口返回得String類型得json用來解析返回Map public Map<String, Object> jsonUtil(String json) { JSONObject obj = new JSONObject().parseObject(json); Map<String, Object> mapjson = new HashMap<>(); for (String str : obj.keySet()) { mapjson.put(str, obj.get(str)); } return mapjson; } public static void main(String[] args) { Map<String, Object> headers = new HashMap<>(); String str = get("接口的url"); HttpRequestUtil hru = new HttpRequestUtil(); for(String key :(hru.jsonUtil(str).keySet())) { if("code".equals(key)) { System.out.println("value:"+hru.jsonUtil(str).get(key)); } } } }
get請求攜帶參數再url後面拼接json
post請求把參數寫在post方法的jsonString參數中,必須是json格式的數據app