激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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請求工具類(實例講解)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品在线视频观看 | 亚洲小视频在线观看,com | 中国嫩模一级毛片 | 久久久久亚洲美女啪啪 | 精国品产一区二区三区有限公司 | 日韩在线播放一区二区 | 亚洲精品一区二区三区在线看 | 国产精品久久久久久久久久久久久久久久 | 国产孕妇孕交大片孕 | 日韩蜜桃视频 | 国产电影精品久久 | 国产一区二区午夜 | 狠狠操精品视频 | 亚洲网在线 | 国产理论视频在线观看 | 免费午夜视频在线观看 | 黄色片免费视频 | 中文字幕国产日韩 | 九九视屏 | 亚洲一级毛片 | 欧美日韩爱爱视频 | 人成免费a级毛片 | 成年片在线观看 | 草莓福利视频在线观看 | 精品一区二区三区免费毛片 | 亚洲网站免费看 | 中文字幕网在线 | 久久精品国产99久久久古代 | 久久亚洲线观看视频 | 一级观看免费完整版视频 | 免费在线观看一级片 | av电影手机在线看 | 99精品视频在线导航 | 日本在线一区二区 | 特大黑人videos与另类娇小 | 美国一级免费视频 | 亚洲激情91| 污视频在线看 | 欧美日韩大片在线观看 | 一级做a在线观看 | 国语自产免费精品视频在 |