• Java HttpClientUtil工具类


    HttpClientUtil工具类

    • POM依赖
    <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
    <dependency>
    	<groupId>org.apache.httpcomponents</groupId>
    	<artifactId>httpclient</artifactId>
    	<version>4.5.10</version>
    </dependency>
    
    • java代码
    package cn.pconline.utils;
    
    import cn.pconline.BusinessException;
    import cn.pconline.exeception.CodeEnum;
    import lombok.extern.slf4j.Slf4j;
    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.config.RequestConfig;
    import org.apache.http.client.entity.UrlEncodedFormEntity;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.client.utils.URLEncodedUtils;
    import org.apache.http.conn.ssl.NoopHostnameVerifier;
    import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
    import org.apache.http.conn.ssl.TrustStrategy;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.message.BasicNameValuePair;
    import org.apache.http.ssl.SSLContextBuilder;
    import org.apache.http.util.EntityUtils;
    
    import javax.net.ssl.SSLContext;
    import java.io.IOException;
    import java.io.UnsupportedEncodingException;
    import java.net.URI;
    import java.security.KeyManagementException;
    import java.security.KeyStoreException;
    import java.security.NoSuchAlgorithmException;
    import java.security.cert.X509Certificate;
    import java.util.*;
    
    /**
     * @Description httpclient工具类
     * @Author jie.zhao
     * @Date 2019/7/24 12:13
     */
    @Slf4j
    public class HttpClientUtil {
    
        public static final String METHOD_NAME_GET = "GET";
        public static final String METHOD_NAME_POST = "POST";
    
        /**
         * 设置请求参数
         *
         * @param
         * @return
         */
        public static List<NameValuePair> setHttpParams(Map<String, Object> paramMap) {
            List<NameValuePair> formParams = new ArrayList<NameValuePair>();
            Set<Map.Entry<String, Object>> set = paramMap.entrySet();
            for (Map.Entry<String, Object> entry : set) {
                formParams.add(new BasicNameValuePair(entry.getKey(), entry.getValue().toString()));
            }
            return formParams;
        }
    
        /**
         * 绕过验证
         *
         * @return
         * @throws NoSuchAlgorithmException
         * @throws KeyManagementException
         * @throws KeyStoreException
         */
        public static SSLConnectionSocketFactory createIgnoreVerifySSL() throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException {
            SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {
                // 信任所有
                @Override
                public boolean isTrusted(X509Certificate[] chain, String authType) {
                    return true;
                }
            }).build();
            return new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
        }
    
        /**
         * 设置代理
         *
         * @param
         * @return
         */
        public static RequestConfig setProxy(String host, Integer port) {
            RequestConfig config;
            if (host != null && port != null) {
                HttpHost httpHost = new HttpHost(host, port);
                config = RequestConfig.custom().setProxy(httpHost).build();
            } else {
                config = RequestConfig.custom().build();
            }
            return config;
        }
    
        /**
         * Http GET请求方法 不使用代理、无参数
         *
         * @param url
         * @return
         */
        public static String httpGet(String url) {
            return httpGet(url, null, null, null);
        }
    
        /**
         * Http GET请求方法 不使用代理
         *
         * @param url
         * @param paramMap
         * @return
         */
        public static String httpGet(String url, Map<String, Object> paramMap) {
            return httpGet(url, paramMap, null, null);
        }
    
        /**
         * Http GET请求方法 使用代理 需要自己传入代理Ip地址和端口
         *
         * @param url
         * @param paramMap
         * @return
         */
        public static String httpGet(String url, Map<String, Object> paramMap, String host, Integer port) {
            return baseHttp(METHOD_NAME_GET, url, paramMap, host, port);
        }
    
        /**
         * Http POST请求方法 不使用代理、无参数
         *
         * @param url
         * @return
         */
        public static String httpPost(String url) {
            return httpPost(url, null, null, null);
        }
    
        /**
         * Http POST请求方法 不使用代理
         *
         * @param url
         * @param paramMap
         * @return
         */
        public static String httpPost(String url, Map<String, Object> paramMap) {
            return httpPost(url, paramMap, null, null);
        }
    
        /**
         * Http POST请求方法 使用代理 需要自己传入代理Ip地址和端口
         *
         * @param url
         * @param paramMap
         * @return
         */
        public static String httpPost(String url, Map<String, Object> paramMap, String host, Integer port) {
            return baseHttp(METHOD_NAME_POST, url, paramMap, host, port);
        }
    
        /**
         * 基础Http请求
         *
         * @param type
         * @param url
         * @param paramMap
         * @param host
         * @return
         */
        public static String baseHttp(String type, String url, Map<String, Object> paramMap, String host, Integer port) {
            CloseableHttpClient httpClient = null;
            try {
                if (!METHOD_NAME_GET.equalsIgnoreCase(type) && !METHOD_NAME_POST.equalsIgnoreCase(type)) {
                    throw new BusinessException(CodeEnum.PARAMETER_INVALID_OR_MISSING);
                }
                String content = "";
                httpClient = HttpClients.custom().setSSLSocketFactory(createIgnoreVerifySSL()).build();
                HttpResponse httpResponse;
                if (METHOD_NAME_GET.equalsIgnoreCase(type)) {
                    httpResponse = httpClient.execute(createHttpGet(url, paramMap, host, port));
                } else {
                    httpResponse = httpClient.execute(createHttpPost(url, paramMap, host, port));
                }
                HttpEntity entity = httpResponse.getEntity();
                if (entity != null) {
                    content = EntityUtils.toString(entity, "UTF-8");
                }
                return content;
            } catch (Exception e) {
                e.printStackTrace();
                log.error("httpRequest请求方法发生异常,msg{}", e.getMessage());
            } finally {
                try {
                    if (httpClient != null) {
                        httpClient.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return null;
        }
    
    
        /**
         * 创建HttpGet
         *
         * @param url
         * @param paramMap
         * @param host
         * @param port
         * @return
         */
        private static HttpGet createHttpGet(String url, Map<String, Object> paramMap, String host, Integer port) {
            HttpGet httpGet = new HttpGet();
            if (paramMap != null) {
                List<NameValuePair> formParams = setHttpParams(paramMap);
                String param = URLEncodedUtils.format(formParams, "UTF-8");
                httpGet.setURI(URI.create(url + "?" + param));
            } else {
                httpGet.setURI(URI.create(url));
            }
            httpGet.setConfig(setProxy(host, port));
            // 设置User-Agent
            httpGet.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36");
            return httpGet;
        }
    
        /**
         * 创建HttpPost
         *
         * @param url
         * @param paramMap
         * @param host
         * @param port
         * @return
         */
        private static HttpPost createHttpPost(String url, Map<String, Object> paramMap, String host, Integer port) throws UnsupportedEncodingException {
            HttpPost httpPost = new HttpPost(url);
            httpPost.setConfig(setProxy(host, port));
            if (paramMap != null) {
                UrlEncodedFormEntity param = new UrlEncodedFormEntity(setHttpParams(paramMap), "UTF-8");
                httpPost.setEntity(param);
            }
            // 设置User-Agent
            httpPost.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36");
            return httpPost;
        }
    }
    
    
  • 相关阅读:
    python2代码转为python3
    Python3.7安装
    Fiddler配置与使用
    postman安装与使用
    kali-linux-2016.2-amd64安装步骤流程
    RedHat7.1_x64位安装步骤
    httpclient配置,使用
    Sentinel限流规则介绍
    mysql修改root用户密码
    winsw打包jar(WINDOWS服务)
  • 原文地址:https://www.cnblogs.com/cnsyear/p/12714269.html
Copyright © 2020-2023  润新知