org.apache.httpcomponents:httpclient 工具類
基於httpclient 版本4.4.1
#因為http連線需要三次握手,在需要頻繁呼叫時浪費資源和時間
故採用連接池的方式連接
依實際需求變更 連線池最大連線數、路由最大連線數
另一個需要注意的是
// 释放Socket流 response.close(); // 释放Connection // httpClient.close();<br><br>
<span style="color: #008080"> 1</span> <span style="color: #0000ff">import</span><span style="color: #000000"> org.apache.http.HttpEntity; </span><span style="color: #008080"> 2</span> <span style="color: #0000ff">import</span><span style="color: #000000"> org.apache.http.NameValuePair; </span><span style="color: #008080"> 3</span> <span style="color: #0000ff">import</span><span style="color: #000000"> org.apache.http.client.config.RequestConfig; </span><span style="color: #008080"> 4</span> <span style="color: #0000ff">import</span><span style="color: #000000"> org.apache.http.client.entity.UrlEncodedFormEntity; </span><span style="color: #008080"> 5</span> <span style="color: #0000ff">import</span><span style="color: #000000"> org.apache.http.client.methods.CloseableHttpResponse; </span><span style="color: #008080"> 6</span> <span style="color: #0000ff">import</span><span style="color: #000000"> org.apache.http.client.methods.HttpGet; </span><span style="color: #008080"> 7</span> <span style="color: #0000ff">import</span><span style="color: #000000"> org.apache.http.client.methods.HttpPost; </span><span style="color: #008080"> 8</span> <span style="color: #0000ff">import</span><span style="color: #000000"> org.apache.http.client.methods.HttpRequestBase; </span><span style="color: #008080"> 9</span> <span style="color: #0000ff">import</span><span style="color: #000000"> org.apache.http.client.utils.URIBuilder; </span><span style="color: #008080"> 10</span> <span style="color: #0000ff">import</span><span style="color: #000000"> org.apache.http.config.SocketConfig; </span><span style="color: #008080"> 11</span> <span style="color: #0000ff">import</span><span style="color: #000000"> org.apache.http.entity.StringEntity; </span><span style="color: #008080"> 12</span> <span style="color: #0000ff">import</span><span style="color: #000000"> org.apache.http.impl.client.CloseableHttpClient; </span><span style="color: #008080"> 13</span> <span style="color: #0000ff">import</span><span style="color: #000000"> org.apache.http.impl.client.HttpClients; </span><span style="color: #008080"> 14</span> <span style="color: #0000ff">import</span><span style="color: #000000"> org.apache.http.impl.conn.PoolingHttpClientConnectionManager; </span><span style="color: #008080"> 15</span> <span style="color: #0000ff">import</span><span style="color: #000000"> org.apache.http.message.BasicNameValuePair; </span><span style="color: #008080"> 16</span> <span style="color: #0000ff">import</span><span style="color: #000000"> org.apache.http.util.EntityUtils; </span><span style="color: #008080"> 17</span> <span style="color: #008080"> 18</span> <span style="color: #0000ff">import</span><span style="color: #000000"> java.io.IOException; </span><span style="color: #008080"> 19</span> <span style="color: #0000ff">import</span><span style="color: #000000"> java.io.UnsupportedEncodingException; </span><span style="color: #008080"> 20</span> <span style="color: #0000ff">import</span><span style="color: #000000"> java.net.URISyntaxException; </span><span style="color: #008080"> 21</span> <span style="color: #0000ff">import</span><span style="color: #000000"> java.util.ArrayList; </span><span style="color: #008080"> 22</span> <span style="color: #0000ff">import</span><span style="color: #000000"> java.util.Map; </span><span style="color: #008080"> 23</span> <span style="color: #008080"> 24</span> <span style="color: #008000">/**</span> <span style="color: #008080"> 25</span> <span style="color: #008000"> * Created by lidada on 2017/6/9. </span><span style="color: #008080"> 26</span> <span style="color: #008000">*/</span> <span style="color: #008080"> 27</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span><span style="color: #000000"> HttpClientUtils { </span><span style="color: #008080"> 28</span> <span style="color: #0000ff">private</span> <span style="color: #0000ff">static</span><span style="color: #000000"> PoolingHttpClientConnectionManager cm; </span><span style="color: #008080"> 29</span> <span style="color: #0000ff">private</span> <span style="color: #0000ff">static</span> String EMPTY_STR = ""<span style="color: #000000">; </span><span style="color: #008080"> 30</span> <span style="color: #0000ff">private</span> <span style="color: #0000ff">static</span> String CONTENT_TYPE_UTF_8 = "UTF-8"<span style="color: #000000">; </span><span style="color: #008080"> 31</span> <span style="color: #0000ff">private</span> <span style="color: #0000ff">static</span> String CONTENT_TYPE_GBK = "GBK"<span style="color: #000000">; </span><span style="color: #008080"> 32</span> <span style="color: #0000ff">private</span> <span style="color: #0000ff">static</span> String CONTENT_TYPE_JSON = "application/json"<span style="color: #000000">; </span><span style="color: #008080"> 33</span> <span style="color: #0000ff">private</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">final</span> <span style="color: #0000ff">int</span> CONNECTION_TIMEOUT_MS = 60000<span style="color: #000000">; </span><span style="color: #008080"> 34</span> <span style="color: #0000ff">private</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">final</span> <span style="color: #0000ff">int</span> SO_TIMEOUT_MS = 60000<span style="color: #000000">; </span><span style="color: #008080"> 35</span> <span style="color: #008080"> 36</span> <span style="color: #0000ff">private</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span><span style="color: #000000"> init() { </span><span style="color: #008080"> 37</span> <span style="color: #0000ff">if</span> (cm == <span style="color: #0000ff">null</span><span style="color: #000000">) { </span><span style="color: #008080"> 38</span> cm = <span style="color: #0000ff">new</span><span style="color: #000000"> PoolingHttpClientConnectionManager(); </span><span style="color: #008080"> 39</span> cm.setMaxTotal(50);<span style="color: #008000">//</span><span style="color: #008000"> 整个连接池最大连接数</span> <span style="color: #008080"> 40</span> cm.setDefaultMaxPerRoute(5);<span style="color: #008000">//</span><span style="color: #008000"> 每路由最大连接数,默认值是2</span> <span style="color: #008080"> 41</span> SocketConfig sc =<span style="color: #000000"> SocketConfig.custom().setSoTimeout(SO_TIMEOUT_MS).build(); </span><span style="color: #008080"> 42</span> <span style="color: #000000"> cm.setDefaultSocketConfig(sc); </span><span style="color: #008080"> 43</span> <span style="color: #000000"> } </span><span style="color: #008080"> 44</span> <span style="color: #000000"> } </span><span style="color: #008080"> 45</span> <span style="color: #008080"> 46</span> <span style="color: #008000">/**</span> <span style="color: #008080"> 47</span> <span style="color: #008000"> * 通过连接池获取HttpClient </span><span style="color: #008080"> 48</span> <span style="color: #008000"> * </span><span style="color: #008080"> 49</span> <span style="color: #008000"> * </span><span style="color: #808080">@return</span> <span style="color: #008080"> 50</span> <span style="color: #008000">*/</span> <span style="color: #008080"> 51</span> <span style="color: #0000ff">private</span> <span style="color: #0000ff">static</span><span style="color: #000000"> CloseableHttpClient getHttpClient() { </span><span style="color: #008080"> 52</span> <span style="color: #000000"> init(); </span><span style="color: #008080"> 53</span> <span style="color: #0000ff">return</span> HttpClients.custom().setConnectionManager(cm).setConnectionManagerShared(<span style="color: #0000ff">true</span><span style="color: #000000">) .build(); </span><span style="color: #008080"> 54</span> <span style="color: #000000"> } </span><span style="color: #008080"> 55</span> <span style="color: #008080"> 56</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span><span style="color: #000000"> String httpGetRequest(String url) { </span><span style="color: #008080"> 57</span> HttpGet httpGet = <span style="color: #0000ff">new</span><span style="color: #000000"> HttpGet(url); </span><span style="color: #008080"> 58</span> <span style="color: #0000ff">return</span><span style="color: #000000"> getResult(httpGet); </span><span style="color: #008080"> 59</span> <span style="color: #000000"> } </span><span style="color: #008080"> 60</span> <span style="color: #008080"> 61</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> String httpGetRequest(String url, Map<String, Object> params) <span style="color: #0000ff">throws</span><span style="color: #000000"> URISyntaxException { </span><span style="color: #008080"> 62</span> URIBuilder ub = <span style="color: #0000ff">new</span><span style="color: #000000"> URIBuilder(); </span><span style="color: #008080"> 63</span> <span style="color: #000000"> ub.setPath(url); </span><span style="color: #008080"> 64</span> <span style="color: #008080"> 65</span> ArrayList<NameValuePair> pairs =<span style="color: #000000"> covertParams2NVPS(params); </span><span style="color: #008080"> 66</span> <span style="color: #000000"> ub.setParameters(pairs); </span><span style="color: #008080"> 67</span> <span style="color: #008080"> 68</span> HttpGet httpGet = <span style="color: #0000ff">new</span><span style="color: #000000"> HttpGet(ub.build()); </span><span style="color: #008080"> 69</span> <span style="color: #0000ff">return</span><span style="color: #000000"> getResult(httpGet); </span><span style="color: #008080"> 70</span> <span style="color: #000000"> } </span><span style="color: #008080"> 71</span> <span style="color: #008080"> 72</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> String httpGetRequest(String url, Map<String, Object> headers, Map<String, Object><span style="color: #000000"> params) </span><span style="color: #008080"> 73</span> <span style="color: #0000ff">throws</span><span style="color: #000000"> URISyntaxException { </span><span style="color: #008080"> 74</span> URIBuilder ub = <span style="color: #0000ff">new</span><span style="color: #000000"> URIBuilder(); </span><span style="color: #008080"> 75</span> <span style="color: #000000"> ub.setPath(url); </span><span style="color: #008080"> 76</span> <span style="color: #008080"> 77</span> ArrayList<NameValuePair> pairs =<span style="color: #000000"> covertParams2NVPS(params); </span><span style="color: #008080"> 78</span> <span style="color: #000000"> ub.setParameters(pairs); </span><span style="color: #008080"> 79</span> <span style="color: #008080"> 80</span> HttpGet httpGet = <span style="color: #0000ff">new</span><span style="color: #000000"> HttpGet(ub.build()); </span><span style="color: #008080"> 81</span> <span style="color: #0000ff">for</span> (Map.Entry<String, Object><span style="color: #000000"> param : headers.entrySet()) { </span><span style="color: #008080"> 82</span> <span style="color: #000000"> httpGet.addHeader(param.getKey(), String.valueOf(param.getValue())); </span><span style="color: #008080"> 83</span> <span style="color: #000000"> } </span><span style="color: #008080"> 84</span> <span style="color: #0000ff">return</span><span style="color: #000000"> getResult(httpGet); </span><span style="color: #008080"> 85</span> <span style="color: #000000"> } </span><span style="color: #008080"> 86</span> <span style="color: #008080"> 87</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span><span style="color: #000000"> String httpPostRequest(String url) { </span><span style="color: #008080"> 88</span> HttpPost httpPost = <span style="color: #0000ff">new</span><span style="color: #000000"> HttpPost(url); </span><span style="color: #008080"> 89</span> <span style="color: #0000ff">return</span><span style="color: #000000"> getResult(httpPost); </span><span style="color: #008080"> 90</span> <span style="color: #000000"> } </span><span style="color: #008080"> 91</span> <span style="color: #008080"> 92</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> String httpPostRequest(String url, Map<String, Object> params) <span style="color: #0000ff">throws</span><span style="color: #000000"> UnsupportedEncodingException { </span><span style="color: #008080"> 93</span> HttpPost httpPost = <span style="color: #0000ff">new</span><span style="color: #000000"> HttpPost(url); </span><span style="color: #008080"> 94</span> ArrayList<NameValuePair> pairs =<span style="color: #000000"> covertParams2NVPS(params); </span><span style="color: #008080"> 95</span> httpPost.setEntity(<span style="color: #0000ff">new</span><span style="color: #000000"> UrlEncodedFormEntity(pairs, CONTENT_TYPE_UTF_8)); </span><span style="color: #008080"> 96</span> <span style="color: #0000ff">return</span><span style="color: #000000"> getResult(httpPost); </span><span style="color: #008080"> 97</span> <span style="color: #000000"> } </span><span style="color: #008080"> 98</span> <span style="color: #008080"> 99</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> String httpPostRequest(String url, Map<String, Object> headers, Map<String, Object><span style="color: #000000"> params) </span><span style="color: #008080">100</span> <span style="color: #0000ff">throws</span><span style="color: #000000"> UnsupportedEncodingException { </span><span style="color: #008080">101</span> HttpPost httpPost = <span style="color: #0000ff">new</span><span style="color: #000000"> HttpPost(url); </span><span style="color: #008080">102</span> <span style="color: #008080">103</span> <span style="color: #0000ff">for</span> (Map.Entry<String, Object><span style="color: #000000"> param : headers.entrySet()) { </span><span style="color: #008080">104</span> <span style="color: #000000"> httpPost.addHeader(param.getKey(), String.valueOf(param.getValue())); </span><span style="color: #008080">105</span> <span style="color: #000000"> } </span><span style="color: #008080">106</span> <span style="color: #008080">107</span> ArrayList<NameValuePair> pairs =<span style="color: #000000"> covertParams2NVPS(params); </span><span style="color: #008080">108</span> httpPost.setEntity(<span style="color: #0000ff">new</span><span style="color: #000000"> UrlEncodedFormEntity(pairs, CONTENT_TYPE_UTF_8)); </span><span style="color: #008080">109</span> <span style="color: #008080">110</span> <span style="color: #0000ff">return</span><span style="color: #000000"> getResult(httpPost); </span><span style="color: #008080">111</span> <span style="color: #000000"> } </span><span style="color: #008080">112</span> <span style="color: #008080">113</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> String httpPostJSON(String url, String json) <span style="color: #0000ff">throws</span><span style="color: #000000"> UnsupportedEncodingException { </span><span style="color: #008080">114</span> HttpPost httpPost = <span style="color: #0000ff">new</span><span style="color: #000000"> HttpPost(url); </span><span style="color: #008080">115</span> StringEntity s = <span style="color: #0000ff">new</span><span style="color: #000000"> StringEntity(json); </span><span style="color: #008080">116</span> <span style="color: #000000"> s.setContentEncoding(CONTENT_TYPE_UTF_8); </span><span style="color: #008080">117</span> s.setContentType(CONTENT_TYPE_JSON);<span style="color: #008000">//</span><span style="color: #008000"> 发送json数据需要设置contentType</span> <span style="color: #008080">118</span> <span style="color: #000000"> httpPost.setEntity(s); </span><span style="color: #008080">119</span> <span style="color: #0000ff">return</span><span style="color: #000000"> getResult(httpPost); </span><span style="color: #008080">120</span> <span style="color: #000000"> } </span><span style="color: #008080">121</span> <span style="color: #008080">122</span> <span style="color: #008080">123</span> <span style="color: #0000ff">private</span> <span style="color: #0000ff">static</span> ArrayList<NameValuePair> covertParams2NVPS(Map<String, Object><span style="color: #000000"> params) { </span><span style="color: #008080">124</span> ArrayList<NameValuePair> pairs = <span style="color: #0000ff">new</span> ArrayList<><span style="color: #000000">(); </span><span style="color: #008080">125</span> <span style="color: #0000ff">for</span> (Map.Entry<String, Object><span style="color: #000000"> param : params.entrySet()) { </span><span style="color: #008080">126</span> pairs.add(<span style="color: #0000ff">new</span><span style="color: #000000"> BasicNameValuePair(param.getKey(), String.valueOf(param.getValue()))); </span><span style="color: #008080">127</span> <span style="color: #000000"> } </span><span style="color: #008080">128</span> <span style="color: #008080">129</span> <span style="color: #0000ff">return</span><span style="color: #000000"> pairs; </span><span style="color: #008080">130</span> <span style="color: #000000"> } </span><span style="color: #008080">131</span> <span style="color: #008080">132</span> <span style="color: #008000">/**</span> <span style="color: #008080">133</span> <span style="color: #008000"> * 处理Http请求 </span><span style="color: #008080">134</span> <span style="color: #008000"> * </span><span style="color: #008080">135</span> <span style="color: #008000"> * </span><span style="color: #808080">@param</span><span style="color: #008000"> request </span><span style="color: #008080">136</span> <span style="color: #008000"> * </span><span style="color: #808080">@return</span> <span style="color: #008080">137</span> <span style="color: #008000">*/</span> <span style="color: #008080">138</span> <span style="color: #0000ff">private</span> <span style="color: #0000ff">static</span><span style="color: #000000"> String getResult(HttpRequestBase request) { </span><span style="color: #008080">139</span> <span style="color: #008080">140</span> RequestConfig.Builder config =<span style="color: #000000"> RequestConfig.copy(RequestConfig.DEFAULT); </span><span style="color: #008080">141</span> <span style="color: #000000"> config.setConnectionRequestTimeout(CONNECTION_TIMEOUT_MS); </span><span style="color: #008080">142</span> <span style="color: #000000"> config.setSocketTimeout(SO_TIMEOUT_MS); </span><span style="color: #008080">143</span> <span style="color: #008080">144</span> <span style="color: #000000"> request.setConfig(config.build()); </span><span style="color: #008080">145</span> <span style="color: #008080">146</span> <span style="color: #008000">//</span><span style="color: #008000"> CloseableHttpClient httpClient = HttpClients.createDefault();</span> <span style="color: #008080">147</span> CloseableHttpClient httpClient =<span style="color: #000000"> getHttpClient(); </span><span style="color: #008080">148</span> CloseableHttpResponse response = <span style="color: #0000ff">null</span><span style="color: #000000">; </span><span style="color: #008080">149</span> <span style="color: #0000ff">try</span><span style="color: #000000"> { </span><span style="color: #008080">150</span> response =<span style="color: #000000"> httpClient.execute(request); </span><span style="color: #008080">151</span> <span style="color: #008000">//</span><span style="color: #008000"> response.getStatusLine().getStatusCode();</span> <span style="color: #008080">152</span> HttpEntity entity =<span style="color: #000000"> response.getEntity(); </span><span style="color: #008080">153</span> <span style="color: #0000ff">if</span> (entity != <span style="color: #0000ff">null</span><span style="color: #000000">) { </span><span style="color: #008080">154</span> <span style="color: #008000">//</span><span style="color: #008000"> long len = entity.getContentLength();</span><span style="color: #008000">//</span><span style="color: #008000"> -1 表示长度未知</span> <span style="color: #008080">155</span> <span style="color: #0000ff">return</span><span style="color: #000000"> EntityUtils.toString(entity); </span><span style="color: #008080">156</span> <span style="color: #000000"> } </span><span style="color: #008080">157</span> } <span style="color: #0000ff">catch</span><span style="color: #000000"> (IOException e) { </span><span style="color: #008080">158</span> <span style="color: #000000"> e.printStackTrace(); </span><span style="color: #008080">159</span> } <span style="color: #0000ff">finally</span><span style="color: #000000"> { </span><span style="color: #008080">160</span> <span style="color: #0000ff">try</span><span style="color: #000000"> { </span><span style="color: #008080">161</span> <span style="color: #008000">//</span><span style="color: #008000"> 释放Socket流</span> <span style="color: #008080">162</span> <span style="color: #000000"> response.close(); </span><span style="color: #008080">163</span> <span style="color: #008000">//</span><span style="color: #008000"> 释放Connection </span><span style="color: #008080">164</span> <span style="color: #008000">//</span><span style="color: #008000"> httpClient.close();</span> <span style="color: #008080">165</span> } <span style="color: #0000ff">catch</span><span style="color: #000000"> (IOException e) { </span><span style="color: #008080">166</span> <span style="color: #000000"> e.printStackTrace(); </span><span style="color: #008080">167</span> <span style="color: #000000"> } </span><span style="color: #008080">168</span> <span style="color: #000000"> } </span><span style="color: #008080">169</span> <span style="color: #008080">170</span> <span style="color: #0000ff">return</span><span style="color: #000000"> EMPTY_STR; </span><span style="color: #008080">171</span> <span style="color: #000000"> } </span><span style="color: #008080">172</span> <span style="color: #008080">173</span> }
以上是org.apache.httpcomponents:httpclient 工具類的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Gate.io通過MeMebox 2.0實現了從現貨交易向鏈上生態的轉型。 1) 構建跨鏈基礎設施,支持12條主鏈互通;2) 打造DeFi應用生態,提供一站式服務;3) 實施激勵機制,重構價值分配。

靠谱的数字货币交易平台推荐:1. OKX,2. Binance,3. Coinbase,4. Kraken,5. Huobi,6. KuCoin,7. Bitfinex,8. Gemini,9. Bitstamp,10. Poloniex,这些平台均以其安全性、用户体验和多样化的功能著称,适合不同层次的用户进行数字货币交易

比特幣的價格在20,000到30,000美元之間。 1. 比特幣自2009年以來價格波動劇烈,2017年達到近20,000美元,2021年達到近60,000美元。 2. 價格受市場需求、供應量、宏觀經濟環境等因素影響。 3. 通過交易所、移動應用和網站可獲取實時價格。 4. 比特幣價格波動性大,受市場情緒和外部因素驅動。 5. 與傳統金融市場有一定關係,受全球股市、美元強弱等影響。 6. 長期趨勢看漲,但需謹慎評估風險。

選擇合規安全的比特幣交易平台需評估其監管許可、KYC/AML政策和安全措施,推薦Binance、OKX和gate.io三大平台。

歐易交易所app支持蘋果手機下載,訪問官網,點擊“蘋果手機”選項,在App Store中獲取並安裝,註冊或登錄後即可進行加密貨幣交易。

芝麻開門是重點加密貨幣交易的平台,用戶可以通過官方網站或社交媒體獲取入口,確保訪問時驗證SSL證書和網站內容的真實性。
