美文网首页
HttpClientUtil工具类

HttpClientUtil工具类

作者: 半日孤独 | 来源:发表于2020-12-01 14:57 被阅读0次

    1.依赖

       <!--httpClient -->
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
                <version>4.5.9</version>
            </dependency>
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpmime</artifactId>
                <version>4.5.9</version>
            </dependency>
    

    2.代码

    public class HttpClientUtil {
    
        /**
         * 默认参数设置
         * setConnectTimeout:设置连接超时时间,单位毫秒。
         * setConnectionRequestTimeout:设置从connect Manager获取Connection 超时时间,单位毫秒。
         * setSocketTimeout:请求获取数据的超时时间,单位毫秒。访问一个接口,多少时间内无法返回数据,就直接放弃此次调用。 暂时定义15分钟
         */
        private RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(600000).setConnectTimeout(600000).setConnectionRequestTimeout(600000).build();
    
        /**
         * 静态内部类---作用:单例产生类的实例
         *
         * @author Administrator
         */
        private static class LazyHolder {
            private static final HttpClientUtil INSTANCE = new HttpClientUtil();
    
        }
    
        private HttpClientUtil() {
        }
    
        public static HttpClientUtil getInstance() {
            return LazyHolder.INSTANCE;
        }
    
        /**
         * 发送 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);
        }
    
        public byte[] sendHttpPostByte(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 sendHttpPostByte(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请求
         *
         * @param httpPost
         * @return
         */
        private String sendHttpPost(HttpPost httpPost) {
            CloseableHttpClient httpClient = null;
            CloseableHttpResponse response = null;
            HttpEntity entity = null;
            String responseContent = null;
            try {
                // 创建默认的httpClient实例
                httpClient = HttpClients.createDefault();
                httpPost.setConfig(requestConfig);
                // 执行请求
                long execStart = System.currentTimeMillis();
                response = httpClient.execute(httpPost);
                long execEnd = System.currentTimeMillis();
                System.out.println("=================执行post请求耗时:" + (execEnd - execStart) + "ms");
                long getStart = System.currentTimeMillis();
                entity = response.getEntity();
                responseContent = EntityUtils.toString(entity, "UTF-8");
                long getEnd = System.currentTimeMillis();
                System.out.println("=================获取响应结果耗时:" + (getEnd - getStart) + "ms");
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    // 关闭连接,释放资源
                    if (response != null) {
                        response.close();
                    }
                    if (httpClient != null) {
                        httpClient.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return responseContent;
        }
    
        private byte[] sendHttpPostByte(HttpPost httpPost) {
            CloseableHttpClient httpClient = null;
            CloseableHttpResponse response = null;
            HttpEntity entity = null;
            byte[] responseContent = null;
            try {
                // 创建默认的httpClient实例
                httpClient = HttpClients.createDefault();
                httpPost.setConfig(requestConfig);
                // 执行请求
                long execStart = System.currentTimeMillis();
                response = httpClient.execute(httpPost);
                long execEnd = System.currentTimeMillis();
                System.out.println("=================执行post请求耗时:" + (execEnd - execStart) + "ms");
                long getStart = System.currentTimeMillis();
                entity = response.getEntity();
                responseContent = EntityUtils.toByteArray(entity);
                long getEnd = System.currentTimeMillis();
                System.out.println("=================获取响应结果耗时:" + (getEnd - getStart) + "ms");
            } 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请求
         *
         * @param httpUrl
         */
        public String sendHttpGet(String httpUrl) {
            HttpGet httpGet = new HttpGet(httpUrl);// 创建get请求
            return sendHttpGet(httpGet);
        }
    
        /**
         * 发送 get请求Https
         *
         * @param httpUrl
         */
        public String sendHttpsGet(String httpUrl) {
            HttpGet httpGet = new HttpGet(httpUrl);// 创建get请求
            return sendHttpsGet(httpGet);
        }
    
        /**
         * 发送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.createDefault();
    
                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;
        }
    
        /**
         * 发送Get请求Https
         * @param httpGet
         * @return
         */
        private String sendHttpsGet(HttpGet httpGet) {
            CloseableHttpClient httpClient = null;
            CloseableHttpResponse response = null;
            HttpEntity entity = null;
            String responseContent = null;
            try {
                // 创建默认的httpClient实例.
                PublicSuffixMatcher publicSuffixMatcher = PublicSuffixMatcherLoader.load(new URL(httpGet.getURI().toString()));
                DefaultHostnameVerifier hostnameVerifier = new DefaultHostnameVerifier(publicSuffixMatcher);
                httpClient = HttpClients.custom().setSSLHostnameVerifier(hostnameVerifier).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;
        }
    
    
    }
    

    3.使用

    HttpClientUtil.getInstance().sendHttpPostByte(requestUrl, jsonObject.toJSONString());
    

    相关文章

      网友评论

          本文标题:HttpClientUtil工具类

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