美文网首页
HttpClient工具类

HttpClient工具类

作者: 闫松林 | 来源:发表于2018-06-27 16:18 被阅读0次

    第一版

    依赖包

        <dependency>
          <groupId>org.apache.httpcomponents</groupId>
          <artifactId>httpclient</artifactId>
          <version>4.5.5</version>
        </dependency>
    

    package com.ysl;
    
    import org.apache.http.HttpEntity;
    import org.apache.http.NameValuePair;
    import org.apache.http.client.CookieStore;
    import org.apache.http.client.config.CookieSpecs;
    import org.apache.http.client.config.RequestConfig;
    import org.apache.http.client.entity.UrlEncodedFormEntity;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.config.Registry;
    import org.apache.http.config.RegistryBuilder;
    import org.apache.http.conn.socket.ConnectionSocketFactory;
    import org.apache.http.conn.socket.PlainConnectionSocketFactory;
    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.entity.StringEntity;
    import org.apache.http.impl.client.BasicCookieStore;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.impl.client.LaxRedirectStrategy;
    import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
    import org.apache.http.message.BasicNameValuePair;
    import org.apache.http.ssl.SSLContextBuilder;
    import org.apache.http.util.EntityUtils;
    
    import java.io.IOException;
    import java.security.cert.CertificateException;
    import java.security.cert.X509Certificate;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;
    
    public class HttpClientUtil{
    
        // 请求设置
        CookieStore cookieStore = new BasicCookieStore();
        private RequestConfig requestConfig = RequestConfig.custom()
                .setSocketTimeout(15000)
                .setConnectTimeout(15000)
                .setConnectionRequestTimeout(15000)
                .setCookieSpec(CookieSpecs.STANDARD)
                .build();
    
    //    HttpClientContext context = HttpClientContext.create();
    
        private static HttpClientUtil instance = null;
        private HttpClientUtil(){}
        public static HttpClientUtil getInstance(){
            if (instance == null) {
                instance = new HttpClientUtil();
            }
            return instance;
        }
    
    //https代码块
        private static final String HTTP = "http";
        private static final String HTTPS = "https";
        private static SSLConnectionSocketFactory sslsf = null;
        private static PoolingHttpClientConnectionManager cm = null;
        private static SSLContextBuilder builder = null;
        static {
            try {
                builder = new SSLContextBuilder();
                // 全部信任 不做身份鉴定
                builder.loadTrustMaterial(null, new TrustStrategy() {
                    @Override
                    public boolean isTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
                        return true;
                    }
                });
                sslsf = new SSLConnectionSocketFactory(builder.build(), new String[]{"SSLv2Hello", "SSLv3", "TLSv1", "TLSv1.2"}, null, NoopHostnameVerifier.INSTANCE);
                Registry<ConnectionSocketFactory> registry = RegistryBuilder.<ConnectionSocketFactory>create()
                        .register(HTTP, new PlainConnectionSocketFactory())
                        .register(HTTPS, sslsf)
                        .build();
                cm = new PoolingHttpClientConnectionManager(registry);
                cm.setMaxTotal(200);//max connection
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
    
    
    //------------------------------------------------------------------
    
        /**
         * 发送 get请求
         * @param httpUrl
         */
        public String sendHttpGet(String httpUrl) {
            HttpGet httpGet = new HttpGet(httpUrl);// 创建get请求
            return sendHttpGet(httpGet);
        }
    
        /**
         * 发送 post请求
         * @param httpUrl 地址
         */
        public String sendHttpPost(String httpUrl) {
            HttpPost httpPost = new HttpPost(httpUrl);// 创建httpPost
            return sendHttpPost(httpPost);
        }
    
        /**
         * 发送 post请求
         * @param httpUrl 地址
         * @param params 参数(格式:key1=value1&key2=value2)
         */
        public String sendHttpPost(String httpUrl, String params) {
            HttpPost httpPost = new HttpPost(httpUrl);// 创建httpPost
            try {
                //设置参数
                StringEntity stringEntity = new StringEntity(params, "UTF-8");
                stringEntity.setContentType("application/x-www-form-urlencoded");
                httpPost.setEntity(stringEntity);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return sendHttpPost(httpPost);
        }
    
        /**
         * 发送 post请求
         * @param httpUrl 地址
         * @param maps 参数
         */
        public String sendHttpPost(String httpUrl, Map<String, String> maps) {
            HttpPost httpPost = new HttpPost(httpUrl);// 创建httpPost
            // 创建参数队列
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
            for (String key : maps.keySet()) {
                nameValuePairs.add(new BasicNameValuePair(key, maps.get(key)));
            }
            try {
                httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8"));
            } catch (Exception e) {
                e.printStackTrace();
            }
            return sendHttpPost(httpPost);
        }
    
    
    
    //------------------------------------------------------------------
    
        /**
         * 发送Post请求(创建post请求客户端)
         * @param httpPost
         * @return
         */
        private String sendHttpPost(HttpPost httpPost) {
            CloseableHttpClient httpClient = null;
            CloseableHttpResponse response = null;
            HttpEntity entity = null;
            String responseContent = null;
            try {
                // 创建默认的httpClient实例.
                httpClient = HttpClients.custom().setDefaultCookieStore(cookieStore).build();
                httpPost.setConfig(requestConfig);
                // 执行请求
                response = httpClient.execute(httpPost);
    
    //            System.out.println("获取 : "+response.getAllHeaders());
    
                entity = response.getEntity();
                responseContent = EntityUtils.toString(entity, "UTF-8");
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    // 关闭连接,释放资源
                    if (response != null) {
                        response.close();
                    }
                    if (httpClient != null) {
                        httpClient.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return responseContent;
        }
    
        /**
         * 发送Get请求(创建get请求客户端)
         * @param httpGet
         * @return
         */
        private String sendHttpGet(HttpGet httpGet) {
            CloseableHttpClient httpClient = null;
            CloseableHttpResponse response = null;
            HttpEntity entity = null;
            String responseContent = null;
            try {
                // 创建默认的httpClient实例.
                httpClient = HttpClients.custom()
                        .setDefaultCookieStore(cookieStore)
                        .setRedirectStrategy(new LaxRedirectStrategy())
                        .build();
                httpGet.setConfig(requestConfig);
                // 执行请求
                response = httpClient.execute(httpGet);
                entity = response.getEntity();
                responseContent = EntityUtils.toString(entity, "UTF-8");
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    // 关闭连接,释放资源
                    if (response != null) {
                        response.close();
                    }
                    if (httpClient != null) {
                        httpClient.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return responseContent;
        }
    
    
    //------------------------------------------------------------------
    
        /**
         * 创建https的 (get请求客户端https)
         * @param httpGet
         * @return
         */
        private String sendHttpsGet(HttpGet httpGet) {
            CloseableHttpClient httpClient = null;
            CloseableHttpResponse response = null;
            HttpEntity entity = null;
            String responseContent = null;
            try {
                // 创建默认的httpClient实例.
                httpClient = HttpClients.custom()
                        .setDefaultCookieStore(cookieStore)
                        .setRedirectStrategy(new LaxRedirectStrategy())
                        .setSSLSocketFactory(sslsf)
                        .setConnectionManager(cm)
                        .setConnectionManagerShared(true)
                        .build();
                httpGet.setConfig(requestConfig);
                // 执行请求
                response = httpClient.execute(httpGet);
                entity = response.getEntity();
                responseContent = EntityUtils.toString(entity, "UTF-8");
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    // 关闭连接,释放资源
                    if (response != null) {
                        response.close();
                    }
                    if (httpClient != null) {
                        httpClient.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return responseContent;
        }
    
        /**
         * 创建https的 (post请求客户端https)
         * @param httpPost
         * @return
         */
        private String sendHttpsPost(HttpPost httpPost) {
            CloseableHttpClient httpClient = null;
            CloseableHttpResponse response = null;
            HttpEntity entity = null;
            String responseContent = null;
            try {
                // 创建默认的httpClient实例.
                httpClient = HttpClients.custom()
                        .setDefaultCookieStore(cookieStore)
                        .setRedirectStrategy(new LaxRedirectStrategy())
                        .setSSLSocketFactory(sslsf)
                        .setConnectionManager(cm)
                        .setConnectionManagerShared(true)
                        .build();
                httpPost.setConfig(requestConfig);
                // 执行请求
                response = httpClient.execute(httpPost);
    
    //            System.out.println("获取 : "+response.getAllHeaders());
    
                entity = response.getEntity();
                responseContent = EntityUtils.toString(entity, "UTF-8");
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    // 关闭连接,释放资源
                    if (response != null) {
                        response.close();
                    }
                    if (httpClient != null) {
                        httpClient.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return responseContent;
        }
    
    //------------------------------------------------------------------
        /**
         * 发送https的get请求
         * @param httpUrl
         * @return
         */
        public String sendHttpsGet(String httpUrl) {
            HttpGet httpGet = new HttpGet(httpUrl);// 创建get请求
            return sendHttpsGet(httpGet);
        }
    
        /**
         * 发送 post请求
         * @param httpUrl 地址
         */
        public String sendHttpsPost(String httpUrl) {
            HttpPost httpPost = new HttpPost(httpUrl);// 创建httpPost
            return sendHttpsPost(httpPost);
        }
    
        /**
         * 发送 post请求
         * @param httpUrl 地址
         * @param params 参数(格式:key1=value1&key2=value2)
         */
        public String sendHttpsPost(String httpUrl, String params) {
            HttpPost httpPost = new HttpPost(httpUrl);// 创建httpPost
            try {
                //设置参数
                StringEntity stringEntity = new StringEntity(params, "UTF-8");
                stringEntity.setContentType("application/x-www-form-urlencoded");
                httpPost.setEntity(stringEntity);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return sendHttpsPost(httpPost);
        }
    
    }
    

    相关文章

      网友评论

          本文标题:HttpClient工具类

          本文链接:https://www.haomeiwen.com/subject/ouxiyftx.html