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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲va欧美va国产va天堂影 | 国产精品一区三区 | a免费看 | 精品久久久久免费极品大片 | 亚洲网色 | 免费毛片在线观看 | 国产一区二区三区毛片 | 高清不卡免费一区二区三区 | 日本久本草精品 | 亚洲国产第一区二区香蕉日日 | 国产精品午夜性视频网站 | 欧美大片一区二区 | 国产在线精品观看 | 久久精品国产在热亚洲 | 蛮荒的童话未删减在线观看 | 52av我爱avhaose01好 | 国产清纯白嫩大学生正在播放 | 含羞草传媒每天免费一次破解 | 亚洲 欧美 中文字幕 在线 | 农夫69小说小雨与农村老太 | 国产免费精彩视频 | 免费日批 | 91视频免费观看网站 | 日韩一区二区三区不卡视频 | 亚洲 欧美 国产 综合 播放 | 日本肥熟 | 亚洲欧美色综合图小说 | 精品国产福利片在线观看 | 免费精品99久久国产综合精品 | 国产在线观看精品香蕉v区 国产在线观看a | 精品国产91久久久久 | 美女18隐私羞羞视频网站 | 久久中文字幕免费高清 | 日韩一区二区不卡 | 91精品91久久久久久 | 欧美日韩va | 亚洲va在线va天堂成人 | 日本高清不卡一区久久精品 | 成人网18免费网 | 久久久无码精品亚洲A片猫咪 | 国产免费小视频在线观看 |