httpclientutil java_HttpClientUtils.java

package com.vcredit.ddcash.batch.util;

import java.io.BufferedReader;

import java.io.ByteArrayOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.HttpURLConnection;

import java.net.URL;

import java.security.cert.X509Certificate;

import javax.net.ssl.SSLContext;

import javax.net.ssl.TrustManager;

import javax.net.ssl.X509TrustManager;

import org.apache.http.HttpEntity;

import org.apache.http.HttpResponse;

import org.apache.http.HttpStatus;

import org.apache.http.client.HttpClient;

import org.apache.http.client.config.RequestConfig;

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.conn.ssl.SSLConnectionSocketFactory;

import org.apache.http.entity.StringEntity;

import org.apache.http.impl.client.CloseableHttpClient;

import org.apache.http.impl.client.HttpClientBuilder;

import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;

import org.apache.http.util.EntityUtils;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

/**

* HttpClientUtils

*/

public class HttpClientUtils {

/**

* 日志工具

*/

private static final Logger logger = LoggerFactory.getLogger(HttpClientUtils.class);

/**

* 5分钟

*/

public static final int MINUTE_FIVE = 300000;

/**

* 10分钟

*/

public static final int MINUTE_TEN = 600000;

/**

* HttpClient

*/

private static final HttpClient client = getInstance();

/**

* 让Httpclient支持https

*

* @return HttpClient

*/

private static HttpClient getInstance() {

X509TrustManager x509mgr = new X509TrustManager() {

public void checkClientTrusted(X509Certificate[] xcs, String string) {

}

public void checkServerTrusted(X509Certificate[] xcs, String string) {

}

public X509Certificate[] getAcceptedIssuers() {

return null;

}

};

SSLContext sslContext = null;

try {

sslContext = SSLContext.getInstance(SSLConnectionSocketFactory.SSL);

sslContext.init(null, new TrustManager[] { x509mgr }, null);

} catch (Exception e) {

logger.error("error to init httpclient", e);

}

SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext, SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager();

connManager.setMaxTotal(400);// 客户端总并行链接最大数

connManager.setDefaultMaxPerRoute(40); // 每个主机的最大并行链接数

HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();

httpClientBuilder.setConnectionManager(connManager);

httpClientBuilder.setSSLSocketFactory(sslsf);

return httpClientBuilder.build();

}

public static final RequestConfig getDefaultTimeOutConfig() {

return getTimeOutConfig(60000, 30000);

}

private static final RequestConfig getTimeOutConfig(int socketTimeout, int connectionTimeout) {

return RequestConfig.custom().setSocketTimeout(socketTimeout).setConnectTimeout(connectionTimeout).build();

}

/**

* Get方法查询

*/

public static String getMethodGetResponse(String address) throws Exception {

return getMethodGetResponse(address, getDefaultTimeOutConfig());

}

/**

* Post方法查询

*/

public static String getMethodPostResponse(String address, HttpEntity paramEntity) throws Exception {

RequestConfig config = getDefaultTimeOutConfig();

return getMethodPostResponse(address, paramEntity, config);

}

/**

* 自定义超时的Get方法查询

*/

public static String getMethodGetResponse(String address, int connectionTimeout, int socketTimeout) throws Exception {

return getMethodGetResponse(address, getTimeOutConfig(socketTimeout, connectionTimeout));

}

/**

* 自定义超时的Post方法

*/

public static String getMethodPostResponse(String address, HttpEntity paramEntity, int connectionTimeout, int socketTimeout) throws Exception {

RequestConfig config = getTimeOutConfig(socketTimeout, connectionTimeout);

return getMethodPostResponse(address, paramEntity, config);

}

/**

* Post Entity

*/

public static byte[] getMethodPostBytes(String address, HttpEntity paramEntity) throws Exception {

return getMethodPostContent(address, paramEntity, getDefaultTimeOutConfig());

}

/**

* HttpClient get方法请求返回Entity

*/

public static byte[] getMethodGetContent(String address) throws Exception {

return getMethodGetContent(address, getDefaultTimeOutConfig());

}

/**

* HttpClient Get方法请求数据

*/

private static String getMethodGetResponse(String address, RequestConfig config) throws Exception {

logger.info("Start Access Address(" + address + ") With Get Request");

byte[] result = getMethodGetContent(address, config);

return new String(result, "utf-8");

}

/**

* HttpClient Post方法请求数据

*/

private static String getMethodPostResponse(String address, HttpEntity paramEntity, RequestConfig config) throws Exception {

logger.info("Begin Access Url(" + address + ") By Post");

byte[] content = getMethodPostContent(address, paramEntity, config);

String result = new String(content, "utf-8");

logger.info("Response -> " + result);

return result;

}

/**

* HttpClient get方法请求返回Entity

*/

private static byte[] getMethodGetContent(String address, RequestConfig config) throws Exception {

HttpGet get = new HttpGet(address);

try {

logger.info("Start Access Address(" + address + ") With Get Request");

get.setConfig(config);

HttpResponse response = client.execute(get);

if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {

int code = response.getStatusLine().getStatusCode();

throw new RuntimeException("HttpGet Access Fail , Return Code(" + code + ")");

}

response.getEntity().getContent();

return convertEntityToBytes(response.getEntity());

} finally {

if (get != null) {

get.releaseConnection();

}

}

}

/**

* Post Entity

*/

private static byte[] getMethodPostContent(String address, HttpEntity paramEntity, RequestConfig config) throws Exception {

HttpPost post = new HttpPost(address);

try {

if (paramEntity != null) {

post.setEntity(paramEntity);

}

post.setConfig(config);

HttpResponse response = client.execute(post);

if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {

int code = response.getStatusLine().getStatusCode();

throw new RuntimeException("HttpPost Request Access Fail Return Code(" + code + ")");

}

HttpEntity entity = response.getEntity();

if (entity == null) {

throw new RuntimeException("HttpPost Request Access Fail Response Entity Is null");

}

return convertEntityToBytes(entity);

} finally {

if (post != null) {

post.releaseConnection();

}

}

}

/**

* 转化返回为byte数组

*

* @param entity

* @return byte[]

* @throws Exception

*/

private static byte[] convertEntityToBytes(HttpEntity entity) throws Exception {

InputStream inputStream = null;

try {

if (entity == null || entity.getContent() == null) {

throw new RuntimeException("Response Entity Is null");

}

inputStream = entity.getContent();

ByteArrayOutputStream out = new ByteArrayOutputStream();

byte[] buffer = new byte[1024];

int len = 0;

while ((len = inputStream.read(buffer)) != -1) {

out.write(buffer, 0, len);

}

out.flush();

return out.toByteArray();

} finally {

if (inputStream != null) {

inputStream.close();

}

}

}

/**

* 甜橙小贷发送消息工具

* @param path

* @param params

* @return

* @throws Exception

*/

public static String post(String path,String params) throws Exception{

if(path.startsWith("https")){

return https(path,params);

}else{

return http(path,params);

}

}

public static String http(String path,String params) throws Exception{

HttpURLConnection httpConn=null;

BufferedReader in=null;

PrintWriter out=null;

try {

URL url=new URL(path);

httpConn=(HttpURLConnection)url.openConnection();

httpConn.setRequestMethod("POST");

httpConn.setDoInput(true);

httpConn.setDoOutput(true);

//发送post请求参数

out=new PrintWriter(httpConn.getOutputStream());

out.println(params);

out.flush();

//读取响应

if(httpConn.getResponseCode()==HttpURLConnection.HTTP_OK){

StringBuffer content=new StringBuffer();

String tempStr="";

in=new BufferedReader(new InputStreamReader(httpConn.getInputStream()));

while((tempStr=in.readLine())!=null){

content.append(tempStr);

}

return content.toString();

}else{

throw new Exception("请求出现了问题!");

}

} catch (IOException e) {

e.printStackTrace();

}finally{

in.close();

out.close();

httpConn.disconnect();

}

return null;

}

public static String https(String path,String params) throws Exception {

String res = null;

CloseableHttpClient client = HttpClientBuilder.create().build();

HttpPost request = new HttpPost(path);

RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(10000).setConnectTimeout(2000).build();// 设置请求和传输超时时间

request.setConfig(requestConfig);

StringEntity myEntity = new StringEntity(params, "UTF-8");

try {

request.setEntity(myEntity);

CloseableHttpResponse response = client.execute(request);

res = EntityUtils.toString(response.getEntity());

return res;

} catch (Exception e) {

e.printStackTrace();

} finally {

if (client != null) {

try {

client.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

return null;

}

}

Map paramsMap = new HashMap();

paramsMap.put("identitycard", request.getMobileAuthIdentity());

paramsMap.put("mobile", request.getMobile());

String paramJson = GsonUtils.toJson(paramsMap);

logger.info("isauthCollect->Request->" + paramJson);

String base64Content = Base64.encodeBase64String(paramJson.getBytes("utf-8"));

StringEntity paramEntity = new StringEntity(base64Content, "UTF-8");

String respJson = HttpClientUtils.getMethodPostResponse(url, paramEntity);

logger.info("isauthCollect->Response->" + respJson);

VBSCommonResponseDto result= GsonUtils.convertObj(respJson, VBSCommonResponseDto.class);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值