分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

HttpClientUtil

发布时间:2023-09-06 02:00责任编辑:苏小强关键词:暂无标签
package com.hshbic.cloudapp.thirdserver.utils;import java.io.IOException;import java.util.ArrayList;import java.util.List;import java.util.Map;import javax.net.ssl.SSLContext;import org.apache.http.Consts;import org.apache.http.HttpEntity;import org.apache.http.HttpHeaders;import org.apache.http.HttpStatus;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.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.SSLConnectionSocketFactory;import org.apache.http.ssl.SSLContexts;import org.apache.http.entity.StringEntity;import org.apache.http.impl.client.CloseableHttpClient;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 org.slf4j.Logger;import org.slf4j.LoggerFactory;/** * ?* @author jff * ?*/public class HttpClientUtil { ???private final static Logger logger = LoggerFactory.getLogger(HttpClientUtil.class); ???/** 读取超时 */ ???private final static int SOCKET_TIMEOUT = 60000; ???/** 连接超时 */ ???private final static int CONNECTION_TIMEOUT = 10000; ???private final static int CONNECTION_REQUEST_TIMEOUT = 10000; ???/** 每个HOST的最大连接数量 */ ???private final static int MAX_CONN_PRE_HOST = 20; ???/** 连接池的最大连接数 */ ???private final static int MAX_CONN = 60; ???private final static String JSON_CHARSET = "application/json; charset=UTF-8"; ???????/** * ?* @param url * @param headers * @param jsonData * @return * @throws Exception */ ???public static String doPost(String url,Map<String,String> headers,String ?jsonData)throws Exception { ??????????if(url==null){ ??????????????throw new Exception("请求URL为空"); ??????????} ???????CloseableHttpClient httpClient = getHttpClient(); ??????????HttpEntity responseEntity = null; ??????????HttpPost httppost = null; ??????????CloseableHttpResponse response = null; ?????????????????????httppost = new HttpPost(url); ??????????try{ ??????????????httppost.addHeader(HttpHeaders.CONTENT_TYPE, JSON_CHARSET); ??????????????if (jsonData == null || jsonData.trim().length() <= 0) { ??????????????????throw new Exception("请求body为空"); ???????????} ??????????????StringEntity stringEntity= new StringEntity(jsonData, "UTF-8"); ??????????????httppost.setEntity(stringEntity); ?????????????????????????????if (headers != null && headers.size() > 0) { ???????????????for (Map.Entry<String, String> entry : headers.entrySet()) { ???????????????????httppost.addHeader(entry.getKey(), entry.getValue()); ???????????????} ???????????} ??????????????response = httpClient.execute(httppost); ??????????????responseEntity = response.getEntity(); ???????????int statusCode = response.getStatusLine().getStatusCode(); ???????????if (HttpStatus.SC_OK == statusCode) { ???????????????return EntityUtils.toString(responseEntity); ???????????} else { ???????????????throw new Exception("请求响应异常。 StatusCode=" + statusCode); ???????????} ??????????}catch(Exception e){ ??????????????logger.error("POST请求 ?url= " + url + " 异常信息:" ???????????????????+ e); ???????????throw new Exception("POST请求异常 ?url=" + url, e); ??????????}finally{ ??????????????if (httppost != null) { ??????????????????httppost.releaseConnection(); ??????????????} ??????????????if (responseEntity != null) { ??????????????????try { ??????????????????????responseEntity.getContent().close(); ??????????????????} catch (IOException e) { ??????????????????} ??????????????} ??????????????if (response != null) { ??????????????????try { ??????????????????????response.close(); ??????????????????} catch (IOException e) { ??????????????????} ??????????????} ??????????} ??????????????????????} ???/** ????* ?????* @param url ????* @param headers ????* @param requestParas 表单提交方式 ????* @return ????* @throws Exception ????*/ ???public static String doPost(String url,Map<String,String> headers,Map<String,String> requestParas)throws Exception { ???????if(url==null){ ???????????throw new Exception("请求URL为空"); ???????} ????CloseableHttpClient httpClient = getHttpClient(); ???????HttpEntity responseEntity = null; ???????HttpPost httppost = null; ???????CloseableHttpResponse response = null; ??????????????????httppost = new HttpPost(url); ???????try{ ???????????httppost.addHeader(HttpHeaders.CONTENT_TYPE, JSON_CHARSET); ?????????????????????????List<NameValuePair> form = new ArrayList<>(); ???????????????????????????????if(requestParas!=null&&requestParas.size()>0){ ???????????????????for(String key: requestParas.keySet()){ ???????????????????????if(key!=null&&key.length()>0){ ???????????????????????????form.add(new BasicNameValuePair(key, requestParas.get(key))); ???????????????????????} ???????????????????} ???????????????????????????????????} ???????????????UrlEncodedFormEntity entity = new UrlEncodedFormEntity(form, Consts.UTF_8); ???????????????????????????????????httppost.setEntity(entity); ???????????????????????if (headers != null && headers.size() > 0) { ???????????????for (Map.Entry<String, String> entry : headers.entrySet()) { ???????????????????httppost.addHeader(entry.getKey(), entry.getValue()); ???????????????} ???????????} ???????????response = httpClient.execute(httppost); ???????????responseEntity = response.getEntity(); ???????????int statusCode = response.getStatusLine().getStatusCode(); ???????????if (HttpStatus.SC_OK == statusCode) { ???????????????return EntityUtils.toString(responseEntity); ???????????} else { ???????????????throw new Exception("请求响应异常。 StatusCode=" + statusCode); ???????????} ???????}catch(Exception e){ ???????????logger.error("POST请求 ?url= " + url + " 异常信息:" ???????????????????+ e); ???????????throw new Exception("POST请求异常 ?url=" + url, e); ???????}finally{ ???????????if (httppost != null) { ???????????????httppost.releaseConnection(); ???????????} ???????????if (responseEntity != null) { ???????????????try { ???????????????????responseEntity.getContent().close(); ???????????????} catch (IOException e) { ???????????????} ???????????} ???????????if (response != null) { ???????????????try { ???????????????????response.close(); ???????????????} catch (IOException e) { ???????????????} ???????????} ???????} ???????????????????}/** * ?* @param url * @param headers * @return * @throws Exception */ ???????public static String doGet(String url,Map<String,String> headers)throws Exception { ???????if(url==null){ ???????????throw new Exception("请求URL为空"); ???????} ????CloseableHttpClient httpClient = getHttpClient(); ???????HttpEntity responseEntity = null; ???????HttpGet httpGet = null; ???????CloseableHttpResponse response = null; ??????????????????httpGet = new HttpGet(url); ???????try{ ???????????httpGet.addHeader(HttpHeaders.CONTENT_TYPE, JSON_CHARSET); ???????????????????????????????????if (headers != null && headers.size() > 0) { ???????????????for (Map.Entry<String, String> entry : headers.entrySet()) { ???????????????????httpGet.addHeader(entry.getKey(), entry.getValue()); ???????????????} ???????????} ???????????response = httpClient.execute(httpGet); ???????????responseEntity = response.getEntity(); ???????????int statusCode = response.getStatusLine().getStatusCode(); ???????????if (HttpStatus.SC_OK == statusCode) { ???????????????//logger.info(String.valueOf(statusCode)); ???????????????return EntityUtils.toString(responseEntity); ???????????} else { ???????????????throw new Exception("请求响应异常。 StatusCode=" + statusCode); ???????????} ???????}catch(Exception e){ ???????????logger.error("请求 ?url= " + url + " 异常信息:" ???????????????????+ e); ???????????throw new Exception("请求异常 ?url=" + url, e); ???????}finally{ ???????????if (httpGet != null) { ???????????????httpGet.releaseConnection(); ???????????} ???????????if (responseEntity != null) { ???????????????try { ???????????????????responseEntity.getContent().close(); ???????????????} catch (IOException e) { ???????????????} ???????????} ???????????if (response != null) { ???????????????try { ???????????????????response.close(); ???????????????} catch (IOException e) { ???????????????} ???????????} ???????} ???????????????????}/** * 初始化 CloseableHttpClient * @return CloseableHttpClient对象 */ ???public static CloseableHttpClient getHttpClient() { ???????PoolingHttpClientConnectionManager connManager = null; ???????RequestConfig requestConfig = null; ???????try { ???????????SSLContext sslContext = SSLContexts.createSystemDefault(); ???????????Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory> create() ???????????????????.register("http", PlainConnectionSocketFactory.INSTANCE) ???????????????????.register("https", new SSLConnectionSocketFactory(sslContext)).build(); ???????????connManager = new PoolingHttpClientConnectionManager(socketFactoryRegistry); ???????????connManager.setMaxTotal(MAX_CONN); ???????????connManager.setDefaultMaxPerRoute(MAX_CONN_PRE_HOST); ???????????requestConfig = RequestConfig.custom().setConnectionRequestTimeout(CONNECTION_REQUEST_TIMEOUT) ???????????????????.setConnectTimeout(CONNECTION_TIMEOUT).setSocketTimeout(SOCKET_TIMEOUT).build(); ???????} catch (Exception e) { ???????????logger.error("初始化【PoolingHttpClientConnectionManager、RequestConfig】异常:" + e); ???????} ???????return HttpClients.custom().setConnectionManager(connManager).setDefaultRequestConfig(requestConfig).build(); ???}}

HttpClientUtil

原文地址:https://www.cnblogs.com/peak911/p/9192345.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved