HttpClient Utils工具类的编写方法分享

一给  金牌会员 | 2022-8-31 04:43:57 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 864|帖子 864|积分 2592

转自:
http://www.java265.com/JavaCourse/202204/2934.html
HttpClient简介:
  HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议
HttpClient是一个java语言编写的包, 我们使用HttpClient可以非常方便的发送Http请求,它使基于Http协议请求内容变得非常简单 ----------------------------------------------------------------------------------- HttpClient是Apache Jakarta Common下的子项目 它里面封装了很多使用http协议访问的工具,可用于高效访问http
HttpClient 提供的主要的功能
(1)实现了所有 HTTP 的方法(GET,POST,PUT,HEAD 等)
(2)支持自动转向
(3)支持 HTTPS 协议
(4)支持代理服务器等
 
 
下文笔者讲述编写一个HttpClient Utils工具类的简介说明,如下所示
  1. package com.java265.httpcomponents;  
  2. import org.apache.http.HttpEntity;  
  3. import org.apache.http.HttpHost;  
  4. import org.apache.http.HttpResponse;  
  5. import org.apache.http.NameValuePair;  
  6. import org.apache.http.client.HttpClient;  
  7. import org.apache.http.client.config.RequestConfig;  
  8. import org.apache.http.client.methods.HttpUriRequest;  
  9. import org.apache.http.client.methods.RequestBuilder;  
  10. import org.apache.http.conn.routing.HttpRoute;  
  11. import org.apache.http.impl.client.CloseableHttpClient;  
  12. import org.apache.http.impl.client.HttpClientBuilder;  
  13. import org.apache.http.impl.client.HttpClients;  
  14. import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;  
  15. import org.apache.http.message.BasicNameValuePair;  
  16. import org.apache.http.util.EntityUtils;  
  17.    
  18. import java.io.IOException;  
  19. import java.util.*;  
  20.    
  21. public class HttpClientUtils {  
  22.    
  23.     private static PoolingHttpClientConnectionManager connectionManager = null;  
  24.     private static HttpClientBuilder httpBuilder = null;  
  25.     private static RequestConfig requestConfig = null;  
  26.    
  27.     private static int MAXCONNECTION = 10;  
  28.    
  29.     private static int DEFAULTMAXCONNECTION = 5;  
  30.    
  31.     private static String IP = "cnivi.com.cn";  
  32.     private static int PORT = 80;  
  33.    
  34.     static {  
  35.         //设置http的状态参数  
  36.         requestConfig = RequestConfig.custom()  
  37.                 .setSocketTimeout(5000)  
  38.                 .setConnectTimeout(5000)  
  39.                 .setConnectionRequestTimeout(5000)  
  40.                 .build();  
  41.    
  42.         HttpHost target = new HttpHost(IP, PORT);  
  43.         connectionManager = new PoolingHttpClientConnectionManager();  
  44.         connectionManager.setMaxTotal(MAXCONNECTION);//客户端总并行链接最大数  
  45.         connectionManager.setDefaultMaxPerRoute(DEFAULTMAXCONNECTION);//每个主机的最大并行链接数  
  46.         connectionManager.setMaxPerRoute(new HttpRoute(target), 20);  
  47.         httpBuilder = HttpClients.custom();  
  48.         httpBuilder.setConnectionManager(connectionManager);  
  49.     }  
  50.    
  51.     public static CloseableHttpClient getConnection() {  
  52.         CloseableHttpClient httpClient = httpBuilder.build();  
  53.         return httpClient;  
  54.     }  
  55.    
  56.    
  57.     public static HttpUriRequest getRequestMethod(Map<String, String> map, String url, String method) {  
  58.         List<NameValuePair> params = new ArrayList<NameValuePair>();  
  59.         Set<Map.Entry<String, String>> entrySet = map.entrySet();  
  60.         for (Map.Entry<String, String> e : entrySet) {  
  61.             String name = e.getKey();  
  62.             String value = e.getValue();  
  63.             NameValuePair pair = new BasicNameValuePair(name, value);  
  64.             params.add(pair);  
  65.         }  
  66.         HttpUriRequest reqMethod = null;  
  67.         if ("post".equals(method)) {  
  68.             reqMethod = RequestBuilder.post().setUri(url)  
  69.                     .addParameters(params.toArray(new BasicNameValuePair[params.size()]))  
  70.                     .setConfig(requestConfig).build();  
  71.         } else if ("get".equals(method)) {  
  72.             reqMethod = RequestBuilder.get().setUri(url)  
  73.                     .addParameters(params.toArray(new BasicNameValuePair[params.size()]))  
  74.                     .setConfig(requestConfig).build();  
  75.         }  
  76.         return reqMethod;  
  77.     }  
  78.    
  79.     public static void main(String args[]) throws IOException {  
  80.         Map<String, String> map = new HashMap<String, String>();  
  81.         map.put("account", "");  
  82.         map.put("password", "");  
  83.    
  84.         HttpClient client = getConnection();  
  85.         HttpUriRequest post = getRequestMethod(map, "http://java265.com/userInfoGet", "post");  
  86.         HttpResponse response = client.execute(post);  
  87.    
  88.         if (response.getStatusLine().getStatusCode() == 200) {  
  89.             HttpEntity entity = response.getEntity();  
  90.             String message = EntityUtils.toString(entity, "utf-8");  
  91.             System.out.println(message);  
  92.         } else {  
  93.             System.out.println("请求失败");  
  94.         }  
  95.     }  
  96. }
复制代码
 
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

一给

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表