httpclient的理解(代码理解)

假如你现在还在为自己的技术担忧,假如你现在想提升自己的工资,假如你想在职场上获得更多的话语权,假如你想顺利的度过35岁这个魔咒,假如你想体验BAT的工作环境,那么现在请我们一起开启提升技术之旅吧,详情请点击http://106.12.206.16:8080/qingruihappy/index.html

 

一,httpclient的理解

 httpcliet就是模仿浏览器在服务器内部从一个项目调用另一个项目的技术。比如说调用接口等。

HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。

 二,httpclient的使用方法

1.1,jar包

需要把httpclient的jar包添加到工程中。只需要在工程中添加httpclient的依赖。

1.2,使用方法

1.2.1,get无参请求

 1 @Test
 2     public void doGet() throws Exception {
 3         //创建一个httpclient对象
 4         CloseableHttpClient httpClient = HttpClients.createDefault();
 5         //创建一个GET对象
 6         HttpGet get = new HttpGet("http://www.sogou.com");
 7         //执行请求
 8         CloseableHttpResponse response = httpClient.execute(get);
 9         //取响应的结果
10         int statusCode = response.getStatusLine().getStatusCode();
11         System.out.println(statusCode);
12         HttpEntity entity = response.getEntity();
13         String string = EntityUtils.toString(entity, "utf-8");
14         System.out.println(string);
15         //关闭httpclient
16         response.close();
17         httpClient.close();
18     }

 

1.2.2,get带参请求

 1 @Test
 2     public void doGetWithParam() throws Exception{
 3         //创建一个httpclient对象
 4         CloseableHttpClient httpClient = HttpClients.createDefault();
 5         //创建一个uri对象
 6         URIBuilder uriBuilder = new URIBuilder("http://www.sogou.com/web");
 7         uriBuilder.addParameter("query", "花千骨");
 8         HttpGet get = new HttpGet(uriBuilder.build());
 9         //执行请求
10         CloseableHttpResponse response = httpClient.execute(get);
11         //取响应的结果
12         int statusCode = response.getStatusLine().getStatusCode();
13         System.out.println(statusCode);
14         HttpEntity entity = response.getEntity();
15         String string = EntityUtils.toString(entity, "utf-8");
16         System.out.println(string);
17         //关闭httpclient
18         response.close();
19         httpClient.close();
20     }

 

1.2.3,post无参请求

 1 @Test
 2     public void doPost() throws Exception {
 3         CloseableHttpClient httpClient = HttpClients.createDefault();
 4 
 5         //创建一个post对象
 6         HttpPost post = new HttpPost("http://localhost:8082/httpclient/post.action");
 7         //执行post请求
 8         CloseableHttpResponse response = httpClient.execute(post);
 9         String string = EntityUtils.toString(response.getEntity());
10         System.out.println(string);
11         response.close();
12         httpClient.close();
13         
14     }

 

1.2.4,post带参请求

 1 @Test
 2     public void doPostWithParam() throws Exception{
 3         CloseableHttpClient httpClient = HttpClients.createDefault();
 4      
 5         //创建一个post对象  
 6         HttpPost post = new HttpPost("http://localhost:8082/httpclient/post.action");
 7         //创建一个Entity。模拟一个表单
 8         List<NameValuePair> kvList = new ArrayList<>();
 9         kvList.add(new BasicNameValuePair("username", "张三"));
10         kvList.add(new BasicNameValuePair("password", "123"));
11         
12         //包装成一个Entity对象 
13         StringEntity entity = new UrlEncodedFormEntity(kvList, "utf-8");
14         //设置请求的内容 
15         post.setEntity(entity);
16         
17         //执行post请求
18         CloseableHttpResponse response = httpClient.execute(post);
19         String string = EntityUtils.toString(response.getEntity());
20         System.out.println(string);
21         response.close();
22         httpClient.close();
23     }

 

三,httpclient的案例讲解

3.1,httpclient的工具类httpclientutil

  1 package com.http;
  2 
  3 import java.io.ByteArrayOutputStream;
  4 import java.io.EOFException;
  5 import java.io.IOException;
  6 import java.io.InputStream;
  7 import java.io.InterruptedIOException;
  8 import java.io.UnsupportedEncodingException;
  9 import java.net.SocketException;
 10 import java.net.URI;
 11 import java.net.URISyntaxException;
 12 import java.net.UnknownHostException;
 13 import java.security.KeyManagementException;
 14 import java.security.NoSuchAlgorithmException;
 15 import java.security.cert.X509Certificate;
 16 import java.util.ArrayList;
 17 import java.util.List;
 18 import java.util.Map;
 19 import java.util.Map.Entry;
 20 import java.util.regex.Matcher;
 21 import java.util.regex.Pattern;
 22 import java.util.zip.GZIPInputStream;
 23 
 24 import javax.net.ssl.SSLContext;
 25 import javax.net.ssl.SSLException;
 26 import javax.net.ssl.SSLHandshakeException;
 27 import javax.net.ssl.TrustManager;
 28 import javax.net.ssl.X509TrustManager;
 29 
 30 import org.apache.commons.io.IOUtils;
 31 import org.apache.commons.lang3.StringUtils;
 32 import org.apache.http.Header;
 33 import org.apache.http.HttpEntity;
 34 import org.apache.http.HttpEntityEnclosingRequest;
 35 import org.apache.http.HttpHost;
 36 import org.apache.http.HttpRequest;
 37 import org.apache.http.HttpResponse;
 38 import org.apache.http.NameValuePair;
 39 import org.apache.http.NoHttpResponseException;
 40 import org.apache.http.ParseException;
 41 import org.apache.http.ProtocolException;
 42 import org.apache.http.client.ClientProtocolException;
 43 import org.apache.http.client.CookieStore;
 44 import org.apache.http.client.HttpRequestRetryHandler;
 45 import org.apache.http.client.config.CookieSpecs;
 46 import org.apache.http.client.config.RequestConfig;
 47 import org.apache.http.client.config.RequestConfig.Builder;
 48 import org.apache.http.client.entity.UrlEncodedFormEntity;
 49 import org.apache.http.client.methods.CloseableHttpResponse;
 50 import org.apache.http.client.methods.HttpGet;
 51 import org.apache.http.client.methods.HttpPost;
 52 import org.apache.http.client.protocol.HttpClientContext;
 53 import org.apache.http.conn.ConnectTimeoutException;
 54 import org.apache.http.conn.HttpHostConnectException;
 55 import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
 56 import org.apache.http.cookie.Cookie;
 57 import org.apache.http.entity.ByteArrayEntity;
 58 import org.apache.http.impl.client.BasicCookieStore;
 59 import org.apache.http.impl.client.CloseableHttpClient;
 60 import org.apache.http.impl.client.DefaultRedirectStrategy;
 61 import org.apache.http.impl.client.HttpClientBuilder;
 62 import org.apache.http.impl.client.HttpClients;
 63 import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
 64 import org.apache.http.message.BasicNameValuePair;
 65 import org.apache.http.protocol.HttpContext;
 66 import org.apache.http.util.ByteArrayBuffer;
 67 import org.apache.http.util.EntityUtils;
 68 
 69 /**
 70  * HttpClient工具封装类,Post,Get请求,代理请求
 71  * 作者:<br>
 72  * 版本:1.0<br>
 73  * 创建日期:下午9:21:00<br>
 74  */
 75 public class HttpClientUtil {
 76     
 77     /***连接超时时间*/
 78     private Integer connectTimeout =60*1000;
 79     
 80     private Integer socketTimeout =180*1000;
 81     private CloseableHttpClient httpClient = null;
 82     
 83     private CookieStore cookieStore = new  BasicCookieStore();
 84 
 85     
 86     /** 代理请求 */
 87     public HttpClientUtil(String proxyHost, int proxyPort) {
 88         this(proxyHost, proxyPort, -1, -1, 0, 0, true);
 89     }
 90 
 91     /** 默认*/
 92     public HttpClientUtil() {
 93         this(null, 0, -1, -1, 0, 0, true);
 94     }
 95 
 96     /** 进行请求无代理设置连接时间  */
 97     public HttpClientUtil(int socketTimeout, int connectTimeout) {
 98         this(null, 0, socketTimeout, connectTimeout, 0, 0, true);
 99     }
100 
101     
102     /**
103      * 
104      * @param proxyHost  代理主机地址
105      * @param proxyPort  代理端口
106      * @param socketTimeout
107      * @param connectTimeout
108      * @param route  
109      * @param maxTotal
110      * @param followRedirect
111      */
112     public HttpClientUtil(String proxyHost, int proxyPort, int socketTimeout, int connectTimeout, int route, int maxTotal, boolean followRedirect){
113         Builder builder = RequestConfig.custom();
114         builder.setCookieSpec(CookieSpecs.BROWSER_COMPATIBILITY);
115         if (followRedirect) {
116             builder.setCircularRedirectsAllowed(true);
117             builder.setMaxRedirects(100);
118         }
119         if (StringUtils.isNotBlank(proxyHost) && proxyPort > 0) {
120             builder.setProxy(new HttpHost(proxyHost, proxyPort));
121         }
122         
123         //设置连接时间
124         if (socketTimeout != -1) {
125             this.socketTimeout = socketTimeout;
126         }
127         builder.setSocketTimeout(this.socketTimeout);
128         
129         if (connectTimeout != -1) {
130             this.connectTimeout = connectTimeout;
131         }
132         builder.setConnectTimeout(this.connectTimeout);
133         builder.setConnectionRequestTimeout(this.connectTimeout);
134 
135         RequestConfig requestConfig = builder.build();
136         init(requestConfig, route, maxTotal);
137     }
138     
139     private void init(RequestConfig requestConfig, int route, int maxTotal) {
140         X509TrustManager x509mgr = new X509TrustManager() {
141             @Override
142             public void checkClientTrusted(X509Certificate[] xcs, String string) {
143             }
144 
145             @Override
146             public void checkServerTrusted(X509Certificate[] xcs, String string) {
147             }
148 
149             @Override
150             public X509Certificate[] getAcceptedIssuers() {
151                 return null;
152             }
153         };
154 
155         SSLContext sslContext = null;
156         try {
157             sslContext = SSLContext.getInstance("TLS");
158         } catch (NoSuchAlgorithmException e1) {
159             e1.printStackTrace();
160         }
161 
162         try {
163             sslContext.init(null, new TrustManager[] { x509mgr }, null);
164         } catch (KeyManagementException e) {
165             e.printStackTrace();
166         }
167 
168         SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext, SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
169 
170         HttpRequestRetryHandler httpRequestRetryHandler = new HttpRequestRetryHandler() {
171             @Override
172             public boolean retryRequest(IOException exception, int executionCount, HttpContext context) {
173                 if (executionCount >= 5) {// 如果已经重试了5次,就放弃
174                     return false;
175                 }
176                 if (exception instanceof NoHttpResponseException) {// 如果服务器丢掉了连接,那么就重试
177                     return true;
178                 }
179                 if (exception instanceof SSLHandshakeException) {// 不要重试SSL握手异常
180                     return false;
181                 }
182                 if (exception instanceof InterruptedIOException) {// 超时
183                     return false;
184                 }
185                 if (exception instanceof UnknownHostException) {// 目标服务器不可达
186                     return false;
187                 }
188                 if (exception instanceof ConnectTimeoutException) {// 连接被拒绝
189                     return false;
190                 }
191                 if (exception instanceof SSLException) {// ssl握手异常
192                     return false;
193                 }
194                 // 2016-03-09针对broken pipe的问题做处理
195                 if (exception instanceof SocketException) {
196                     return true;
197                 }
198 
199                 HttpClientContext clientContext = HttpClientContext.adapt(context);
200                 HttpRequest request = clientContext.getRequest();
201                 // 如果请求是幂等的,就再次尝试
202                 if (!(request instanceof HttpEntityEnclosingRequest)) {
203                     return true;
204                 }
205                 return false;
206             }
207         };
208         DefaultRedirectStrategy redirectStrategy = new DefaultRedirectStrategy() {
209             public boolean isRedirected(HttpRequest request, HttpResponse response, HttpContext context) {
210                 boolean isRedirect = false;
211                 try {
212                     isRedirect = super.isRedirected(request, response, context);
213                 } catch (ProtocolException e) {
214                     e.printStackTrace();
215                 }
216                 if (!isRedirect) {
217                     int responseCode = response.getStatusLine().getStatusCode();
218                     if (responseCode == 301 || responseCode == 302) {
219                         return true;
220                     }
221                 }
222                 return isRedirect;
223             }
224 
225             @Override
226             protected URI createLocationURI(String location) throws ProtocolException {
227                 location = location.replace("|", "%7C");
228                 return super.createLocationURI(location);
229             }
230         };
231 
232         HttpClientBuilder httpClientBuilder = HttpClients.custom();
233         httpClientBuilder.setDefaultRequestConfig(requestConfig);
234         if (route > 0 && maxTotal > 0) {
235             PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager();
236             connManager.setDefaultMaxPerRoute(route);
237             connManager.setMaxTotal(maxTotal);
238             httpClientBuilder.setConnectionManager(connManager);
239         }
240 
241         httpClientBuilder.setSSLSocketFactory(sslsf);
242         httpClientBuilder.setDefaultCookieStore(cookieStore);
243         httpClientBuilder.setRedirectStrategy(redirectStrategy);
244         httpClientBuilder.setRetryHandler(httpRequestRetryHandler);
245         httpClient = httpClientBuilder.build();
246     }
247     public Response sendRequest(Request request) throws Exception {
248         // request.setHeader("Accept",
249         // "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
250         // request.setHeader("Accept-Encoding", "gzip, deflate");
251         if (request.getHeader("User-Agent") == null) {
252             request.setHeader("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 Firefox/24.0");
253         }
254         request.setHeader("Accept-Language", "zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3");
255         request.setHeader("Connection", "keep-alive");
256 
257         // logger.debug("发送请求:" + request);
258 
259         String method = request.getProperty("method").toLowerCase();
260         String url = request.getProperty("url");
261         Map<String, String> headers = request.getHeaders();
262         Map<String, String> params = request.getParams();
263 
264         List<NameValuePair> formParams = new ArrayList<NameValuePair>();
265         if (params != null && params.size() != 0) {
266             formParams = new ArrayList<NameValuePair>();
267             for (Entry<String, String> entry : params.entrySet()) {
268                 formParams.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
269             }
270         }
271 
272         Response response = null;
273         if ("post".equals(method)) {
274             byte[] postData = request.getPostData();
275             if (postData != null) {
276                 response = post(url, postData, headers);
277             } else {
278                 response = post(url, formParams, headers);
279             }
280         } else if ("get".equals(method)) {
281             response = get(url, formParams, headers);
282         }
283         return response;
284     }
285 
286     /**
287      * Get请求
288      * 
289      * @param url
290      * @param params
291      * @return
292      */
293     public Response get(String url, List<NameValuePair> params, Map<String, String> headers) {
294         Response response = new Response();
295         try {
296             // Get请求
297             HttpGet httpGet = new HttpGet(url);
298 
299             String encoding = "utf-8";
300 
301             // 设置头
302             if (headers != null && headers.size() != 0) {
303                 for (Entry<String, String> entry : headers.entrySet()) {
304                     httpGet.setHeader(entry.getKey(), entry.getValue());
305                 }
306 
307                 String contentType = headers.get("Content-Type");
308                 if (StringUtils.isNotBlank(contentType)) {
309                     if (matcher(contentType, "(charset)\\s?=\\s?(gbk)")) {
310                         encoding = "gbk";
311                     } else if (matcher(contentType, "(charset)\\s?=\\s?(gb2312)")) {
312                         encoding = "gb2312";
313                     }
314                 }
315             }
316 
317             // 设置参数,如果url上已经有了问号,就不附加参数
318             if (params != null && params.size() > 0) {
319                 if (httpGet.getURI().toString().indexOf("?") == -1) {
320                     String str = EntityUtils.toString(new UrlEncodedFormEntity(params, encoding));
321                     httpGet.setURI(new URI(httpGet.getURI().toString() + "?" + str));
322                 } else {
323                     String str = EntityUtils.toString(new UrlEncodedFormEntity(params, encoding));
324                     httpGet.setURI(new URI(httpGet.getURI().toString() + "&" + str));
325                 }
326             }
327 
328             // 发送请求
329             CloseableHttpResponse httpResponse = httpClient.execute(httpGet);
330 
331             try {
332                 int statusCode = httpResponse.getStatusLine().getStatusCode();
333                 response.setStatusCode(statusCode);
334                 ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
335                 // 获取返回数据
336                 HttpEntity entity = httpResponse.getEntity();
337 
338                 Header[] responseHeaders = httpResponse.getAllHeaders();
339                 for (Header header : responseHeaders) {
340                     response.setHeader(header.getName(), header.getValue());
341                 }
342 
343                 Header header = entity.getContentEncoding();
344                 if (header != null && header.getValue().toLowerCase().equals("gzip")) {
345                     byte[] bytes = IOUtils.toByteArray(new GZIPInputStream(entity.getContent()));
346                     response.setContent(bytes);
347                 } else {
348                     byte[] bytes = getData(entity);
349                     response.setContent(bytes);
350                 }
351                 return response;
352             } finally {
353                 httpResponse.close();
354             }
355         } catch (ConnectTimeoutException e) {
356         } catch (HttpHostConnectException e) {
357         } catch (ParseException e) {
358         } catch (UnsupportedEncodingException e) {
359         } catch (IOException e) {
360         } catch (URISyntaxException e) {
361         } catch (Exception e) {
362         }
363         return null;
364     }
365 
366     /**
367      * // Post请求
368      * 
369      * @param url
370      * @param params
371      * @return
372      */
373     public Response post(String url, byte[] data, Map<String, String> headers) {
374         Response response = new Response();
375         try {
376             // Post请求
377             HttpPost httpPost = new HttpPost(url);
378             // 设置头
379             if (headers != null && headers.size() != 0) {
380                 for (Entry<String, String> entry : headers.entrySet()) {
381                     httpPost.setHeader(entry.getKey(), entry.getValue());
382                 }
383             }
384 
385             // 设置参数
386             httpPost.setEntity(new ByteArrayEntity(data));
387 
388             // 发送请求
389             CloseableHttpResponse httpResponse = httpClient.execute(httpPost);
390 
391             try {
392                 int statusCode = httpResponse.getStatusLine().getStatusCode();
393                 response.setStatusCode(statusCode);
394 
395                 // 获取返回数据
396                 HttpEntity entity = httpResponse.getEntity();
397 
398                 Header header = entity.getContentEncoding();
399                 if (header != null && header.getValue().toLowerCase().equals("gzip")) {
400                     byte[] bytes = IOUtils.toByteArray(new GZIPInputStream(entity.getContent()));
401                     response.setContent(bytes);
402                 } else {
403                     byte[] bytes = EntityUtils.toByteArray(entity);
404                     response.setContent(bytes);
405                 }
406 
407                 return response;
408             } finally {
409                 httpResponse.close();
410             }
411         } catch (ConnectTimeoutException e) {
412         } catch (HttpHostConnectException e) {
413         } catch (UnsupportedEncodingException e) {
414         } catch (ClientProtocolException e) {
415         } catch (ParseException e) {
416         } catch (IOException e) {
417         } catch (Exception e) {
418         }
419         return null;
420     }
421     private byte[] getData(HttpEntity entity) throws IOException {
422         if (entity == null) {
423             throw new IllegalArgumentException("HTTP entity may not be null");
424         }
425         InputStream inputStream = entity.getContent();
426         if (inputStream == null) {
427             return null;
428         }
429         try {
430             if (entity.getContentLength() > Integer.MAX_VALUE) {
431                 throw new IllegalArgumentException("HTTP entity too large to be buffered in memory");
432             }
433             int i = (int) entity.getContentLength();
434             if (i < 0) {
435                 i = 4096;
436             }
437 
438             ByteArrayBuffer buffer = new ByteArrayBuffer(i);
439             byte[] tmp = new byte[1024];
440             int l = -1;
441             try {
442                 while ((l = inputStream.read(tmp)) != -1) {
443                     buffer.append(tmp, 0, l);
444                 }
445             } catch (EOFException e) {
446                 buffer.clear();
447                 // 针对于以没有结束符的做fix处理,减小缓存,并进行异常处理,忽略最后不能获取的数据
448                 tmp = new byte[32];
449                 try {
450                     while ((l = inputStream.read(tmp)) != 1) {
451                         buffer.append(tmp, 0, l);
452                     }
453                 } catch (EOFException e2) {
454                 }
455 
456             }
457             // TODO 查明具体没有返回的原因
458             byte[] byteArray = buffer.toByteArray();
459             if (byteArray == null || byteArray.length == 0) {
460                 return buffer.buffer();
461             }
462             return byteArray;
463         } finally {
464             inputStream.close();
465         }
466     }
467     /**
468      * // Post请求
469      * 
470      * @param url
471      * @param params
472      * @return
473      */
474     public Response post(String url, List<NameValuePair> params, Map<String, String> headers) {
475         Response response = new Response();
476         try {
477             // Post请求
478             HttpPost httpPost = new HttpPost(url);
479 
480             String encoding = "utf-8";
481 
482             // 设置头
483             if (headers != null && headers.size() != 0) {
484                 for (Entry<String, String> entry : headers.entrySet()) {
485                     httpPost.setHeader(entry.getKey(), entry.getValue());
486                 }
487 
488                 String contentType = headers.get("Content-Type");
489                 if (StringUtils.isNotBlank(contentType)) {
490                     if (matcher(contentType, "(charset)\\s?=\\s?(gbk)")) {
491                         encoding = "gbk";
492                     } else if (matcher(contentType, "(charset)\\s?=\\s?(gb2312)")) {
493                         encoding = "gb2312";
494                     }
495                 }
496             }
497 
498             // 设置参数
499             if (params != null && params.size() > 0) {
500                 httpPost.setEntity(new UrlEncodedFormEntity(params, encoding));
501             }
502 
503             // 发送请求
504             CloseableHttpResponse httpResponse = httpClient.execute(httpPost);
505 
506             try {
507                 int statusCode = httpResponse.getStatusLine().getStatusCode();
508                 response.setStatusCode(statusCode);
509 
510                 // 获取返回数据
511                 HttpEntity entity = httpResponse.getEntity();
512 
513                 Header header = entity.getContentEncoding();
514                 if (header != null && header.getValue().toLowerCase().equals("gzip")) {
515                     byte[] data = IOUtils.toByteArray(new GZIPInputStream(entity.getContent()));
516                     response.setContent(data);
517                 } else {
518                     byte[] data = getData(entity);
519                     response.setContent(data);
520                 }
521 
522                 return response;
523             } finally {
524                 httpResponse.close();
525             }
526         } catch (ConnectTimeoutException e) {
527         } catch (HttpHostConnectException e) {
528         } catch (UnsupportedEncodingException e) {
529         } catch (ClientProtocolException e) {
530         } catch (ParseException e) {
531         } catch (IOException e) {
532         } catch (Exception e) {
533         }
534         return null;
535     }
536 
537     /**
538      * 获取Response内容字符集
539      * 
540      * @param response
541      * @return
542      */
543     public String getContentCharset(HttpResponse response) {
544         String charset = "ISO_8859-1";
545         Header header = response.getEntity().getContentType();
546         if (header != null) {
547             String s = header.getValue();
548             if (matcher(s, "(charset)\\s?=\\s?(utf-?8)")) {
549                 charset = "utf-8";
550             } else if (matcher(s, "(charset)\\s?=\\s?(gbk)")) {
551                 charset = "gbk";
552             } else if (matcher(s, "(charset)\\s?=\\s?(gb2312)")) {
553                 charset = "gb2312";
554             }
555         }
556 
557         Header encoding = response.getEntity().getContentEncoding();
558 
559         return charset;
560     }
561     
562     /**
563      * 正则匹配
564      * 
565      * @param s
566      * @param pattern
567      * @return
568      */
569     private boolean matcher(String s, String pattern) {
570         Pattern p = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE + Pattern.UNICODE_CASE);
571         Matcher matcher = p.matcher(s);
572         if (matcher.find()) {
573             return true;
574         } else {
575             return false;
576         }
577     }
578     
579     public Integer getConnectTimeout() {
580         return connectTimeout;
581     }
582 
583     public void setConnectTimeout(Integer connectTimeout) {
584         this.connectTimeout = connectTimeout;
585     }
586 
587     public Integer getSocketTimeout() {
588         return socketTimeout;
589     }
590 
591     public void setSocketTimeout(Integer socketTimeout) {
592         this.socketTimeout = socketTimeout;
593     }
594 
595     public CloseableHttpClient getHttpClient() {
596         return httpClient;
597     }
598 
599     public void setHttpClient(CloseableHttpClient httpClient) {
600         this.httpClient = httpClient;
601     }
602 
603     public CookieStore getCookieStore() {
604         return cookieStore;
605     }
606 
607     public void setCookieStore(CookieStore cookieStore) {
608         for(Cookie cookie:cookieStore.getCookies()){
609             this.cookieStore.addCookie(cookie);
610         }
611     }
612     
613 }

 

3.2, resource的property的文件

1 REST_BASE_URL=http://192.168.25.136:8080/rest
2 REST_INDEX_AD_URL=/content/list/89

 

3.3,类中的调用 

 1 public class ContentServiceImpl implements ContentService {
 2 
 3     @Value("${REST_BASE_URL}")
 4     private String REST_BASE_URL;
 5     @Value("${REST_INDEX_AD_URL}")
 6     private String REST_INDEX_AD_URL;
 7     
 8     @Override
 9     public String getContentList() {
10         //调用服务层的服务
11         String result = HttpClientUtil.doGet(REST_BASE_URL + REST_INDEX_AD_URL);
12         //把字符串转换成TaotaoResult
13         try {
14             TaotaoResult taotaoResult = TaotaoResult.formatToList(result, TbContent.class);
15             //取内容列表
16             List<TbContent> list = (List<TbContent>) taotaoResult.getData();
17             List<Map> resultList = new ArrayList<>();
18              //创建一个jsp页码要求的pojo列表
19             for (TbContent tbContent : list) {
20                 Map map = new HashMap<>();
21                 map.put("src", tbContent.getPic());
22                 map.put("height", 240);
23                 map.put("width", 670);
24                 map.put("srcB", tbContent.getPic2());
25                 map.put("widthB", 550);
26                 map.put("heightB", 240);
27                 map.put("href", tbContent.getUrl());
28                 map.put("alt", tbContent.getSubTitle());
29                 resultList.add(map);
30             }
31             return JsonUtils.objectToJson(resultList);
32         } catch (Exception e) {
33             e.printStackTrace();
34         }
35         
36         return null;
37     }
38 
39 }

 

假如你现在还在为自己的技术担忧,假如你现在想提升自己的工资,假如你想在职场上获得更多的话语权,假如你想顺利的度过35岁这个魔咒,假如你想体验BAT的工作环境,那么现在请我们一起开启提升技术之旅吧,详情请点击http://106.12.206.16:8080/qingruihappy/index.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值