Org. apache. httpcomponents: httpclient tool class, java tool class
Httpclient version 4.4.1
Because http connections require three handshakes, resources and time are wasted when frequent calls are required.
Therefore, the connection pool is used for connection.
Change the maximum connection pool connections and maximum route connections as needed
Another thing to note is that
// Release the Socket stream response. close (); // release Connection // httpClient. close ();
1 import org. apache. http. httpEntity; 2 import org. apache. http. nameValuePair; 3 import org. apache. http. client. config. requestConfig; 4 import org. apache. http. client. entity. urlEncodedFormEntity; 5 import org. apache. http. client. methods. closeableHttpResponse; 6 import org. apache. http. client. methods. httpGet; 7 import org. apache. http. client. methods. httpPost; 8 import org. apache. http. client. methods. httpReq UestBase; 9 import org. apache. http. client. utils. URIBuilder; 10 import org. apache. http. config. socketConfig; 11 import org. apache. http. entity. stringEntity; 12 import org. apache. http. impl. client. closeableHttpClient; 13 import org. apache. http. impl. client. httpClients; 14 import org. apache. http. impl. conn. poolingHttpClientConnectionManager; 15 import org. apache. http. message. basicNameValuePair; 16 import Org. apache. http. util. entityUtils; 17 18 import java. io. IOException; 19 import java. io. unsupportedEncodingException; 20 import java.net. URISyntaxException; 21 import java. util. arrayList; 22 import java. util. map; 23 24/*** Created by lazada on. 26 */27 public class HttpClientUtils {28 private static PoolingHttpClientConnectionManager cm; 29 private static String EMPTY_STR = ""; 30 pr Ivate static String CONTENT_TYPE_UTF_8 = "UTF-8"; 31 private static String CONTENT_TYPE_GBK = "GBK"; 32 private static String CONTENT_TYPE_JSON = "application/json"; 33 private static final int CONNECTION_TIMEOUT_MS = 60000; 34 private static final int SO_TIMEOUT_MS = 60000; 35 36 private static void init () {37 if (cm = null) {38 cm = new PoolingHttpClientConnectionManager (); 39 cm. setMaxTotal (50); // The maximum number of connections in the entire connection pool is 40 cm. setdefamaxmaxperroute (5); // maximum number of connections per route. The default value is 2 41 SocketConfig SC = SocketConfig. custom (). setSoTimeout (SO_TIMEOUT_MS ). build (); 42 cm. setdefasocksocketconfig (SC); 43} 44} 45 46/** 47 * Get HttpClient 48*49 * @ return 50 */51 private static CloseableHttpClient getHttpClient () through the connection pool () {52 init (); 53 return HttpClients. custom (). setConnectionManager (cm ). setConnectionManagerShared (tr Ue ). build (); 54} 55 56 public static String httpGetRequest (String url) {57 HttpGet httpGet = new HttpGet (url); 58 return getResult (httpGet ); 59} 60 61 public static String httpGetRequest (String url, Map <String, Object> params) throws URISyntaxException {62 URIBuilder ub = new URIBuilder (); 63 ub. setPath (url); 64 65 ArrayList <NameValuePair> pairs = covertParams2NVPS (params); 66 ub. setParameter S (pairs); 67 68 HttpGet httpGet = new HttpGet (ub. build (); 69 return getResult (httpGet); 70} 71 72 public static String httpGetRequest (String url, Map <String, Object> headers, Map <String, Object> params) 73 throws URISyntaxException {74 URIBuilder ub = new URIBuilder (); 75 ub. setPath (url); 76 77 ArrayList <NameValuePair> pairs = covertParams2NVPS (params); 78 ub. setParameters (pairs); 79 80 HttpGet HttpGet = new HttpGet (ub. build (); 81 for (Map. entry <String, Object> param: headers. entrySet () {82 httpGet. addHeader (param. getKey (), String. valueOf (param. getValue (); 83} 84 return getResult (httpGet); 85} 86 87 public static String httpPostRequest (String url) {88 HttpPost httpPost = new HttpPost (url ); 89 return getResult (httpPost); 90} 91 92 public static String httpPostRequest (String url, Map <String, Object> params) throws UnsupportedEncodingException {93 HttpPost httpPost = new HttpPost (url); 94 ArrayList <NameValuePair> pairs = covertParams2NVPS (params); 95 httpPost. setEntity (new UrlEncodedFormEntity (pairs, CONTENT_TYPE_UTF_8); 96 return getResult (httpPost); 97} 98 99 public static String httpPostRequest (String url, Map <String, Object> headers, map <String, Object> params) 100. Throws UnsupportedEncodingException {101 HttpPost httpPost = new HttpPost (url); 102 103 for (Map. entry <String, Object> param: headers. entrySet () {104 httpPost. addHeader (param. getKey (), String. valueOf (param. getValue (); 105} 106 107 ArrayList <NameValuePair> pairs = covertParams2NVPS (params); 108 httpPost. setEntity (new UrlEncodedFormEntity (pairs, CONTENT_TYPE_UTF_8); 109 110 return getResult (httpPos T); 111} 112 113 public static String httpPostJSON (String url, String json) throws UnsupportedEncodingException {114 HttpPost httpPost = new HttpPost (url ); 115 StringEntity s = new StringEntity (json); 116 s. setContentEncoding (CONTENT_TYPE_UTF_8); 117 s. setContentType (CONTENT_TYPE_JSON); // to send json data, you must set contentType118 httpPost. setEntity (s); 119 return getResult (httpPost); 120} 121 122 123 private static Ar RayList <NameValuePair> covertParams2NVPS (Map <String, Object> params) {124 ArrayList <NameValuePair> pairs = new ArrayList <> (); 125 for (Map. entry <String, Object> param: params. entrySet () {126 pairs. add (new BasicNameValuePair (param. getKey (), String. valueOf (param. getValue (); 127} 128 129 return pairs; 130} 131 132/** 133 * handle Http request 134*135 * @ param request136 * @ return#*/138 private static Strin G getResult (HttpRequestBase request) {139 140 RequestConfig. builder config = RequestConfig. copy (RequestConfig. DEFAULT); 141 config. setConnectionRequestTimeout (CONNECTION_TIMEOUT_MS); 142 config. setSocketTimeout (SO_TIMEOUT_MS); 143 144 request. setConfig (config. build (); 145 146 // CloseableHttpClient httpClient = HttpClients. createDefault (); 147 CloseableHttpClient httpClient = getHttpClient (); 148 Close AbleHttpResponse response = null; 149 try {150 response = httpClient.exe cute (request); 151 // response. getStatusLine (). getStatusCode (); 152 HttpEntity entity = response. getEntity (); 153 if (entity! = Null) {154 // long len = entity. getContentLength (); //-1 indicates that the length is unknown. 155 return EntityUtils. toString (entity); 156} 157} catch (IOException e) {158 e. printStackTrace (); 159} finally {160 try {161 // release the Socket stream 162 response. close (); 163 // release Connection164 // httpClient. close (); 165} catch (IOException e) {166 e. printStackTrace (); 167} 168} 169 170 return EMPTY_STR; 171} 172 173}