一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - HttpUtils 發送http請求工具類(實例講解)

HttpUtils 發送http請求工具類(實例講解)

2020-12-01 14:44Java教程網 Java教程

下面小編就為大家帶來一篇HttpUtils 發送http請求工具類(實例講解)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

廢話不多說,直接上代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Map;
 
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.RequestConfig;
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.methods.HttpRequestBase;
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.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
 
import com.pingan.qhcs.map.audit.constant.CodeConstant;
import com.pingan.qhcs.map.audit.exception.MapException;
 
public class HttpClientUtil {
 
 protected static Log logger = LogFactory.getLog(HttpClientUtil.class);
 
 private static PoolingHttpClientConnectionManager cm;
 private static String EMPTY_STR = "";
 private static String UTF_8 = "UTF-8";
 
 private static void init() {
  if (cm == null) {
   cm = new PoolingHttpClientConnectionManager();
   cm.setMaxTotal(50);// 整個連接池最大連接數
   cm.setDefaultMaxPerRoute(5);// 每路由最大連接數,默認值是2
  }
 }
 
 /**
  * 通過連接池獲取HttpClient
  *
  * @return
  */
 public static CloseableHttpClient getHttpClient() {
  init();
  return HttpClients.custom().setConnectionManager(cm).build();
 }
 
 public static String httpGetRequest(String url) {
  HttpGet httpGet = new HttpGet(url);
  return getResult(httpGet);
 }
 
 public static String httpGetRequest(String url, Map<String, Object> params) throws URISyntaxException {
  URIBuilder ub = new URIBuilder();
  ub.setPath(url);
 
  ArrayList<NameValuePair> pairs = covertParams2NVPS(params);
  ub.setParameters(pairs);
 
  HttpGet httpGet = new HttpGet(ub.build());
  
  return getResult(httpGet);
 }
 
 public static String httpGetRequest(String url, Map<String, Object> headers, Map<String, Object> params)
   throws URISyntaxException {
  URIBuilder ub = new URIBuilder();
  ub.setPath(url);
 
  ArrayList<NameValuePair> pairs = covertParams2NVPS(params);
  ub.setParameters(pairs);
 
  HttpGet httpGet = new HttpGet(ub.build());
  for (Map.Entry<String, Object> param : headers.entrySet()) {
   httpGet.addHeader(param.getKey(), String.valueOf(param.getValue()));
  }
  return getResult(httpGet);
 }
 
 public static String httpPostRequest(String url) {
  HttpPost httpPost = new HttpPost(url);
  return getResult(httpPost);
 }
 
 public static String httpPostRequest(String url, Map<String, Object> params) throws UnsupportedEncodingException {
  HttpPost httpPost = new HttpPost(url);
  ArrayList<NameValuePair> pairs = covertParams2NVPS(params);
  httpPost.setEntity(new UrlEncodedFormEntity(pairs, UTF_8));
  return getResult(httpPost);
 }
 
 public static String httpPostRequest(String url, Map<String, Object> headers, Map<String, Object> params)
   throws UnsupportedEncodingException {
  HttpPost httpPost = new HttpPost(url);
 
  for (Map.Entry<String, Object> param : headers.entrySet()) {
   httpPost.addHeader(param.getKey(), String.valueOf(param.getValue()));
  }
 
  ArrayList<NameValuePair> pairs = covertParams2NVPS(params);
  httpPost.setEntity(new UrlEncodedFormEntity(pairs, UTF_8));
 
  return getResult(httpPost);
 }
 
 public static String httpPostRequest(String url, Map<String, Object> headers, String strBody)
   throws Exception {
  HttpPost httpPost = new HttpPost(url);
 
  for (Map.Entry<String, Object> param : headers.entrySet()) {
   httpPost.addHeader(param.getKey(), String.valueOf(param.getValue()));
  }
  httpPost.setEntity(new StringEntity(strBody, UTF_8));
  return getResult(httpPost);
 }
 
 private static ArrayList<NameValuePair> covertParams2NVPS(Map<String, Object> params) {
  ArrayList<NameValuePair> pairs = new ArrayList<NameValuePair>();
  for (Map.Entry<String, Object> param : params.entrySet()) {
   pairs.add(new BasicNameValuePair(param.getKey(), String.valueOf(param.getValue())));
  }
 
  return pairs;
 }
 
 /**
  * 處理Http請求
  *
  * setConnectTimeout:設置連接超時時間,單位毫秒。
  * setConnectionRequestTimeout:設置從connect Manager獲取Connection 超時時間,單位毫秒。這個屬性是新加的屬性,因為目前版本是可以共享連接池的。
  * setSocketTimeout:請求獲取數據的超時時間,單位毫秒。 如果訪問一個接口,多少時間內無法返回數據,就直接放棄此次調用。
  *
  * @param request
  * @return
  */
 private static String getResult(HttpRequestBase request) {
  
  RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(60000)
    .setConnectionRequestTimeout(5000).setSocketTimeout(60000).build();
  request.setConfig(requestConfig);// 設置請求和傳輸超時時間
 
  // CloseableHttpClient httpClient = HttpClients.createDefault();
  CloseableHttpClient httpClient = getHttpClient();
  try {
   CloseableHttpResponse response = httpClient.execute(request); //執行請求
   // response.getStatusLine().getStatusCode();
   HttpEntity entity = response.getEntity();
   if (entity != null) {
    // long len = entity.getContentLength();// -1 表示長度未知
    String result = EntityUtils.toString(entity);
    response.close();
    // httpClient.close();
    return result;
   }
  } catch (ClientProtocolException e) {
   logger.error("[maperror] HttpClientUtil ClientProtocolException : " + e.getMessage());
   throw new MapException(CodeConstant.CODE_CONNECT_FAIL, "HttpClientUtil ClientProtocolException :" + e.getMessage());
  } catch (IOException e) {
   logger.error("[maperror] HttpClientUtil IOException : " + e.getMessage());
   throw new MapException(CodeConstant.CODE_CONNECT_FAIL, "HttpClientUtil IOException :" + e.getMessage());
  } finally {
 
  }
  return EMPTY_STR;
 }
 
}

以上這篇HttpUtils 發送http請求工具類(實例講解)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 无码AV熟妇素人内射V在线 | 女bbwxxxx非洲黑人 | 欧美精品一国产成人性影视 | 91手机在线 | 欧美国产日韩综合 | 日韩天堂网 | 国产一区二区三区久久精品小说 | www.男人的天堂 | 校花被老头夺去第一次动图 | 免费理伦片高清在线 | 国产精品免费_区二区三区观看 | 美琪美腿白丝交小说 | 美女被绑着吸下部的故事 | 精品国产欧美一区二区五十路 | 日韩影院在线观看 | 高清毛片一区二区三区 | 欧美日韩亚毛片免费观看 | 黄+色+性+人免费 | 亚洲精品免费在线观看 | 国产精品日本一区二区不卡视频 | 王的视频vk | 欧美综合精品一区二区三区 | 极品蜜桃臀美女啪啪 | 2019午夜福合集高清完整版 | 日韩欧美国产综合精品 | 亚洲AV蜜桃永久无码精品无码网 | 午夜久久精品 | 国产99视频精品免视看9 | 冰山美人调教耻辱h | 狠狠色成人综合 | 欧美日韩亚洲国内综合网香蕉 | 114级毛片免费观看 1024亚洲天堂 | 好大好硬好深好爽想要小雪 | 国语刺激对白勾搭视频在线观看 | 日本xxxxx高清免费观看 | 无限好资源第一片免费韩国 | 国产良家| 91视频破解版 | 欧美一区二区三区高清不卡tv | 亚洲视频在线一区二区三区 | 美女女女女女女bbbbbb毛片 |