一给 发表于 2022-8-31 04:43:57

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

转自:
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工具类的简介说明,如下所示
package com.java265.httpcomponents;

import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.client.methods.RequestBuilder;
import org.apache.http.conn.routing.HttpRoute;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
   
import java.io.IOException;
import java.util.*;
   
public class HttpClientUtils {
   
    private static PoolingHttpClientConnectionManager connectionManager = null;
    private static HttpClientBuilder httpBuilder = null;
    private static RequestConfig requestConfig = null;
   
    private static int MAXCONNECTION = 10;
   
    private static int DEFAULTMAXCONNECTION = 5;
   
    private static String IP = "cnivi.com.cn";
    private static int PORT = 80;
   
    static {
      //设置http的状态参数
      requestConfig = RequestConfig.custom()
                .setSocketTimeout(5000)
                .setConnectTimeout(5000)
                .setConnectionRequestTimeout(5000)
                .build();
   
      HttpHost target = new HttpHost(IP, PORT);
      connectionManager = new PoolingHttpClientConnectionManager();
      connectionManager.setMaxTotal(MAXCONNECTION);//客户端总并行链接最大数
      connectionManager.setDefaultMaxPerRoute(DEFAULTMAXCONNECTION);//每个主机的最大并行链接数
      connectionManager.setMaxPerRoute(new HttpRoute(target), 20);
      httpBuilder = HttpClients.custom();
      httpBuilder.setConnectionManager(connectionManager);
    }
   
    public static CloseableHttpClient getConnection() {
      CloseableHttpClient httpClient = httpBuilder.build();
      return httpClient;
    }
   
   
    public static HttpUriRequest getRequestMethod(Map<String, String> map, String url, String method) {
      List<NameValuePair> params = new ArrayList<NameValuePair>();
      Set<Map.Entry<String, String>> entrySet = map.entrySet();
      for (Map.Entry<String, String> e : entrySet) {
            String name = e.getKey();
            String value = e.getValue();
            NameValuePair pair = new BasicNameValuePair(name, value);
            params.add(pair);
      }
      HttpUriRequest reqMethod = null;
      if ("post".equals(method)) {
            reqMethod = RequestBuilder.post().setUri(url)
                  .addParameters(params.toArray(new BasicNameValuePair))
                  .setConfig(requestConfig).build();
      } else if ("get".equals(method)) {
            reqMethod = RequestBuilder.get().setUri(url)
                  .addParameters(params.toArray(new BasicNameValuePair))
                  .setConfig(requestConfig).build();
      }
      return reqMethod;
    }
   
    public static void main(String args[]) throws IOException {
      Map<String, String> map = new HashMap<String, String>();
      map.put("account", "");
      map.put("password", "");
   
      HttpClient client = getConnection();
      HttpUriRequest post = getRequestMethod(map, "http://java265.com/userInfoGet", "post");
      HttpResponse response = client.execute(post);
   
      if (response.getStatusLine().getStatusCode() == 200) {
            HttpEntity entity = response.getEntity();
            String message = EntityUtils.toString(entity, "utf-8");
            System.out.println(message);
      } else {
            System.out.println("请求失败");
      }
    }

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: HttpClient Utils工具类的编写方法分享