这个是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 }