httpClientUtil的get請求


這個是httpClient的get請求寫法,一般需求應該是夠用了。
參考了幾個博客的代碼,具體的網址忘記了,有問題可以聯系我。
代碼:
  1 package com.demo.service.impl;
  2 
  3 import com.demo.service.HttpRequestGetService;
  4 import com.demo.utils.CloseHttpUtil;
  5 import org.apache.http.HttpEntity;
  6 import org.apache.http.ParseException;
  7 import org.apache.http.client.ClientProtocolException;
  8 import org.apache.http.client.methods.CloseableHttpResponse;
  9 import org.apache.http.client.methods.HttpGet;
 10 import org.apache.http.client.utils.URIBuilder;
 11 import org.apache.http.impl.client.CloseableHttpClient;
 12 import org.apache.http.impl.client.HttpClients;
 13 import org.apache.http.util.EntityUtils;
 14 import org.springframework.stereotype.Component;
 15 
 16 import java.io.IOException;
 17 import java.net.URISyntaxException;
 18 import java.util.Map;
 19 
 20 @Component
 21 public class HttpRequestGetServiceImpl implements HttpRequestGetService {
 22     CloseHttpUtil closeHttpUtil = new CloseHttpUtil();
 23 
 24     public String doGetRequest(String url, Map<String, String> headMap, Map<String, String> paramMap) {
 25         // 獲取連接客戶端工具
 26         CloseableHttpClient httpClient = HttpClients.createDefault();
 27         String entityStr = null;
 28         CloseableHttpResponse response = null;
 29         try {
 30             /*
 31              * 由於GET請求的參數都是拼裝在URL地址后方,所以我們要構建一個URL,帶參數
 32              */
 33             URIBuilder uriBuilder = new URIBuilder(url);
 34             for (Map.Entry<String, String> param : paramMap.entrySet()) {
 35                 uriBuilder.addParameter(param.getKey(), param.getValue());
 36             }
 37             // 根據帶參數的URI對象構建GET請求對象
 38             HttpGet httpGet = new HttpGet(uriBuilder.build());
 39 
 40         /*
 41          * 添加請求頭信息
 42          */
 43             for (Map.Entry<String, String> header : headMap.entrySet()) {
 44                 httpGet.addHeader(header.getKey(), header.getValue());
 45             }
 46             /*httpGet.addHeader("Content-Type", "application/VIID+JSON;charset=utf8");
 47             httpGet.addHeader("User-Identify","12345678905030000000");*/
 48             closeHttpUtil.setTimeOut(httpGet);
 49             // 執行請求
 50             response = httpClient.execute(httpGet);
 51             // 獲得響應的實體對象
 52             HttpEntity entity = response.getEntity();
 53             // 使用Apache提供的工具類進行轉換成字符串
 54             entityStr = EntityUtils.toString(entity, "UTF-8");
 55         } catch (ClientProtocolException e) {
 56             System.err.println("Http協議出現問題");
 57             e.printStackTrace();
 58         } catch (ParseException e) {
 59             System.err.println("解析錯誤");
 60             e.printStackTrace();
 61         } catch (URISyntaxException e) {
 62             System.err.println("URI解析異常");
 63             e.printStackTrace();
 64         } catch (IOException e) {
 65             System.err.println("IO異常");
 66             e.printStackTrace();
 67         } finally {
 68             // 釋放連接
 69             closeHttpUtil.close(response, httpClient);
 70         }
 71 
 72         return entityStr;
 73     }
 74 
 75     public String doGetRequestNoparam(String url, Map<String, String> headMap) {
 76         // 獲取連接客戶端工具
 77         CloseableHttpClient httpClient = HttpClients.createDefault();
 78         String entityStr = null;
 79         CloseableHttpResponse response = null;
 80         try {
 81             /*
 82              * 由於GET請求的參數都是拼裝在URL地址后方,所以我們要構建一個URL,帶參數
 83              */
 84             URIBuilder uriBuilder = new URIBuilder(url);
 85             // 根據帶參數的URI對象構建GET請求對象
 86             HttpGet httpGet = new HttpGet(uriBuilder.build());
 87         /*
 88          * 添加請求頭信息
 89          */
 90             for (Map.Entry<String, String> header : headMap.entrySet()) {
 91                 httpGet.addHeader(header.getKey(), header.getValue());
 92             }
 93             /*httpGet.addHeader("Content-Type", "application/VIID+JSON;charset=utf8");
 94             httpGet.addHeader("User-Identify","12345678905030000000");*/
 95             closeHttpUtil.setTimeOut(httpGet);
 96             // 執行請求
 97             response = httpClient.execute(httpGet);
 98             // 獲得響應的實體對象
 99             HttpEntity entity = response.getEntity();
100             // 使用Apache提供的工具類進行轉換成字符串
101             entityStr = EntityUtils.toString(entity, "UTF-8");
102         } catch (ClientProtocolException e) {
103             System.err.println("Http協議出現問題");
104             e.printStackTrace();
105         } catch (ParseException e) {
106             System.err.println("解析錯誤");
107             e.printStackTrace();
108         } catch (URISyntaxException e) {
109             System.err.println("URI解析異常");
110             e.printStackTrace();
111         } catch (IOException e) {
112             System.err.println("IO異常");
113             e.printStackTrace();
114         } finally {
115             // 釋放連接
116             closeHttpUtil.close(response, httpClient);
117         }
118         return entityStr;
119     }
120 
121     public String doGetRequestStringParam(String url, Map<String, String> headMap, String param) {
122         // 獲取連接客戶端工具
123         CloseableHttpClient httpClient = HttpClients.createDefault();
124         String entityStr = null;
125         CloseableHttpResponse response = null;
126         try {
127             /*
128              * 由於GET請求的參數都是拼裝在URL地址后方,所以我們要構建一個URL,帶參數
129              */
130             URIBuilder uriBuilder = new URIBuilder(url);
131             // 根據帶參數的URI對象構建GET請求對象
132             HttpGet httpGet = new HttpGet(uriBuilder.build() + param);
133             System.out.println("調用String參數的URL:" + httpGet);
134         /*
135          * 添加請求頭信息
136          */
137             for (Map.Entry<String, String> header : headMap.entrySet()) {
138                 httpGet.addHeader(header.getKey(), header.getValue());
139             }
140             closeHttpUtil.setTimeOut(httpGet);
141             response = httpClient.execute(httpGet);
142             // 獲得響應的實體對象
143             HttpEntity entity = response.getEntity();
144             // 使用Apache提供的工具類進行轉換成字符串
145             entityStr = EntityUtils.toString(entity, "UTF-8");
146         } catch (ClientProtocolException e) {
147             System.err.println("Http協議出現問題");
148             e.printStackTrace();
149         } catch (ParseException e) {
150             System.err.println("解析錯誤");
151             e.printStackTrace();
152         } catch (URISyntaxException e) {
153             System.err.println("URI解析異常");
154             e.printStackTrace();
155         } catch (IOException e) {
156             System.err.println("IO異常");
157             e.printStackTrace();
158         } finally {
159             // 釋放連接
160             closeHttpUtil.close(response, httpClient);
161 
162         }
163         return entityStr;
164     }
165 
166     public String doGetRequestIntParam(String url, Map<String, String> headMap, int RecordStartNo, int PageRecordNum) {
167         // 獲取連接客戶端工具
168         CloseableHttpClient httpClient = HttpClients.createDefault();
169         String entityStr = null;
170         CloseableHttpResponse response = null;
171         try {
172             /*
173              * 由於GET請求的參數都是拼裝在URL地址后方,所以我們要構建一個URL,帶參數
174              */
175             URIBuilder uriBuilder = new URIBuilder(url);
176             // 根據帶參數的URI對象構建GET請求對象
177             HttpGet httpGet = new HttpGet(uriBuilder.build() + "?" + "RecordStartNo=" + RecordStartNo + "&" + "PageRecordNum=" + PageRecordNum);
178             System.out.println("調用String參數的URL:" + httpGet);
179         /*
180          * 添加請求頭信息
181          */
182             for (Map.Entry<String, String> header : headMap.entrySet()) {
183                 httpGet.addHeader(header.getKey(), header.getValue());
184             }
185             closeHttpUtil.setTimeOut(httpGet);
186             response = httpClient.execute(httpGet);
187             // 獲得響應的實體對象
188             HttpEntity entity = response.getEntity();
189             // 使用Apache提供的工具類進行轉換成字符串
190             entityStr = EntityUtils.toString(entity, "UTF-8");
191         } catch (ClientProtocolException e) {
192             System.err.println("Http協議出現問題");
193             e.printStackTrace();
194         } catch (ParseException e) {
195             System.err.println("解析錯誤");
196             e.printStackTrace();
197         } catch (URISyntaxException e) {
198             System.err.println("URI解析異常");
199             e.printStackTrace();
200         } catch (IOException e) {
201             System.err.println("IO異常");
202             e.printStackTrace();
203         } finally {
204             // 釋放連接
205             closeHttpUtil.close(response, httpClient);
206         }
207         return entityStr;
208     }
209 }
__________________________________________________________________
 1 import org.apache.http.client.config.RequestConfig;
 2 import org.apache.http.client.methods.CloseableHttpResponse;
 3 import org.apache.http.client.methods.HttpGet;
 4 import org.apache.http.client.methods.HttpPut;
 5 import org.apache.http.impl.client.CloseableHttpClient;
 6 
 7 import java.io.IOException;
 8 
 9 public class CloseHttpUtil {
10     public static void close(CloseableHttpResponse response, CloseableHttpClient httpClient) {
11         if (null != response) {
12             try {
13                 response.close();
14                 httpClient.close();
15             } catch (IOException e) {
16                 System.err.println("釋放連接出錯");
17                 e.printStackTrace();
18             }
19         }
20     }
21 
22     public static void setTimeOut(HttpGet httpGet) {
23         RequestConfig requestConfig = RequestConfig.custom()
24                 // 設置連接超時時間(單位毫秒)
25                 .setConnectTimeout(10000)
26                 // 設置請求超時時間(單位毫秒)
27                 .setConnectionRequestTimeout(10000)
28                 // socket讀寫超時時間(單位毫秒)
29                 .setSocketTimeout(10000)
30                 // 設置是否允許重定向(默認為true)
31                 .setRedirectsEnabled(true).build();
32 
33         // 將上面的配置信息 運用到這個Get請求里
34         httpGet.setConfig(requestConfig);
35     }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM