java 授信证书_java信任所有证书

package com.eeepay.cashOut.util;

import java.io.BufferedReader;

import java.io.DataOutputStream;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.UnsupportedEncodingException;

import java.net.HttpURLConnection;

import java.net.MalformedURLException;

import java.net.SocketTimeoutException;

import java.net.URL;

import java.security.KeyManagementException;

import java.security.KeyStoreException;

import java.security.NoSuchAlgorithmException;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import java.util.Set;

import javax.net.ssl.SSLContext;

import org.apache.commons.io.IOUtils;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

import org.apache.http.HttpResponse;

import org.apache.http.client.ClientProtocolException;

import org.apache.http.client.HttpClient;

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.methods.HttpUriRequest;

import org.apache.http.conn.ConnectTimeoutException;

import org.apache.http.conn.ssl.SSLConnectionSocketFactory;

import org.apache.http.conn.ssl.SSLContextBuilder;

import org.apache.http.conn.ssl.TrustStrategy;

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.client.HttpClients;

import org.apache.http.message.BasicNameValuePair;

import com.alibaba.fastjson.JSONObject;

/**

*

* @author ws

*

*/

public class HttpClientUtil {

private static final Log log = LogFactory.getLog(HttpClientUtil.class);

private static final String utf8 = "UTF-8";

private String requestEncoding;

private String responseEncoding;

private String requesParamstEncoding;

public HttpClientUtil() {

super();

this.requestEncoding = utf8;

this.responseEncoding = utf8;

this.requesParamstEncoding = utf8;

}

public HttpClientUtil(String requestEncoding, String responseEncoding, String requesParamstEncoding) {

super();

this.requestEncoding = requestEncoding;

this.responseEncoding = responseEncoding;

this.requesParamstEncoding = requesParamstEncoding;

}

public HttpClientUtil( String responseEncoding) {

super();

this.requestEncoding = utf8;

this.responseEncoding = responseEncoding;

this.requesParamstEncoding = utf8;

}

public String getRequestEncoding() {

return requestEncoding;

}

public void setRequestEncoding(String requestEncoding) {

this.requestEncoding = requestEncoding;

}

public String getResponseEncoding() {

return responseEncoding;

}

public void setResponseEncoding(String responseEncoding) {

this.responseEncoding = responseEncoding;

}

public String getRequesParamstEncoding() {

return requesParamstEncoding;

}

public void setRequesParamstEncoding(String requesParamstEncoding) {

this.requesParamstEncoding = requesParamstEncoding;

}

/**

* 直接访问URL,可以自主设置是否以POST方式访问

* @param finalUrl URL

* @param post 访问方式,是否是Post访问

* @return

* @author Lumia_Zeng

* @date 2016年10月24日 上午10:00:11

*/

public Map baseAccessURL(String finalUrl, boolean post) {

Map map = new HashMap();

String msg = "访问接口失败";

String exceptionMsg = null;

map.put("success", "false");

log.info("URL路径:" + finalUrl);

RequestConfig config = RequestConfig.custom().setSocketTimeout(40000).setConnectTimeout(40000).setConnectionRequestTimeout(40000).build();

Long startTime = System.currentTimeMillis();

CloseableHttpClient httpclient = createCloseableHttpClient(finalUrl,config);

HttpUriRequest httpMethod = null;

if(post){

HttpPost pMethod = new HttpPost(finalUrl);

pMethod.setConfig(config);

httpMethod = pMethod;

}else{

HttpGet gMethod = new HttpGet(finalUrl);

gMethod.setConfig(config);

httpMethod = gMethod;

}

try {

HttpResponse resp = httpclient.execute(httpMethod);

Long endTime = System.currentTimeMillis();

log.info("耗时 "+(endTime-startTime) +" 毫秒");

Integer statusCode = resp.getStatusLine().getStatusCode();

String respContent = IOUtils.toString(resp.getEntity().getContent(), responseEncoding);

respContent = respContent==null ? "" : respContent;

map.put("success", "true");

msg = "访问接口成功";

map.put("responseBody", respContent);

map.put("responseStatusCode", statusCode.toString());

} catch (UnsupportedEncodingException e) {

exceptionMsg = "不支持的编码格式!";

e.printStackTrace();

} catch (ClientProtocolException e) {

exceptionMsg = "ClientProtocolException";

e.printStackTrace();

} catch (IOException e) {

exceptionMsg = "IOException";

e.printStackTrace();

} catch (IllegalStateException e) {

exceptionMsg = "IllegalStateException";

e.printStackTrace();

} catch (Exception e) {

exceptionMsg = "Exception";

e.printStackTrace();

}

map.put("msg", msg);

map.put("exceptionMsg", exceptionMsg);

return map;

}

/**

* 以POST方式访问URL,参数以JSON形式传递

* @param finalUrl

* @param params

* @return

* @author Lumia_Zeng

* @date 2016年10月27日 下午4:07:49

*/

public Map baseAccessURLJSON(String finalUrl,Map params) {

return accessURL(finalUrl, params,true);

}

/**

* 以POST方式访问URL

* @param finalUrl url

* @param params 参数

* @return

* @author Lumia_Zeng

* @date 2016年10月27日 下午4:07:02

*/

public Map baseAccessURL(String finalUrl,Map params) {

return accessURL(finalUrl, params,false);

}

/**

* 访问URL,带参数

* @param finalUrl URL

* @param params 参数

* @param isJson 是否以JSON方式传递参数

* @return

* @author Lumia_Zeng

* @date 2016年10月24日 上午10:02:50

*/

public Map accessURL(String finalUrl,Map params,boolean isJson) {

Map map = new HashMap();

String msg = "访问接口失败";

String exceptionMsg = null;

map.put("success", "false");

log.info("baseAccessURL:" + finalUrl);

Long startTime = System.currentTimeMillis();

RequestConfig config = RequestConfig.custom().setSocketTimeout(40000).setConnectTimeout(40000).setConnectionRequestTimeout(40000).build();

HttpClient httpclient;

httpclient= createCloseableHttpClient(finalUrl,config);

HttpUriRequest httpMethod = null;

HttpPost pMethod = new HttpPost(finalUrl);

pMethod.setConfig(config);

try {

if(isJson && params!=null){

pMethod.addHeader("Content-Type", "application/json; charset=" + requestEncoding);

String strParams = JSONObject.toJSONString(params);

//log.info("JSON参数:" + strParams);

StringEntity entity = new StringEntity(strParams, requesParamstEncoding);

pMethod.setEntity(entity);

}else{

List nvps = new ArrayList();

if(params != null){

Set set = params.keySet();

for (String key : set) {

nvps.add(new BasicNameValuePair(key, params.get(key)));

}

}

log.info("参数:" + nvps);

pMethod.setEntity(new UrlEncodedFormEntity(nvps, requesParamstEncoding));

}

httpMethod = pMethod;

HttpResponse resp = httpclient.execute(httpMethod);

Integer statusCode = resp.getStatusLine().getStatusCode();

String respContent = IOUtils.toString(resp.getEntity().getContent(), responseEncoding);

respContent = respContent==null ? "" : respContent;

map.put("success", "true");

msg = "访问接口成功";

map.put("responseBody", respContent);

map.put("responseStatusCode", statusCode.toString());

} catch (ConnectTimeoutException e) {

exceptionMsg = "ConnectTimeoutException";

e.printStackTrace();

} catch (SocketTimeoutException e) {

exceptionMsg = "SocketTimeoutException";

e.printStackTrace();

} catch (UnsupportedEncodingException e) {

exceptionMsg = "UnsupportedEncodingException";

e.printStackTrace();

} catch (ClientProtocolException e) {

exceptionMsg = "ClientProtocolException";

e.printStackTrace();

} catch (IOException e) {

exceptionMsg = "IOException";

e.printStackTrace();

} catch (IllegalStateException e) {

exceptionMsg = "IllegalStateException";

e.printStackTrace();

} catch (Exception e) {

exceptionMsg = "Exception";

e.printStackTrace();

} finally {

Long endTime = System.currentTimeMillis();

log.info("耗时 "+(endTime-startTime) +" 毫秒");

}

map.put("msg", msg);

map.put("exceptionMsg", exceptionMsg);

return map;

}

/***

* 传入JSON数据,以输出流的方式,发送请求

* @param urlStr 目标地址

* @param jsonStr JSON数据

* @param isPost 是否POST

* @return

* @author Lumia_Zeng

* @date 2016年11月1日 下午2:55:10

*/

public Map accessURLByJsonStream(String urlStr, String jsonStr, boolean isPost) {

log.info(String.format("以JSON方式访问:%s;是否POST:%s;参数:%s",urlStr,isPost,jsonStr));

Map map = new HashMap();

String msg = "访问接口失败";

String exceptionMsg = null;

map.put("success", "false");

try {

URL url = new URL(urlStr);

HttpURLConnection connection = (HttpURLConnection) url.openConnection();

connection.setDoOutput(true);

connection.setDoInput(true);

if (isPost) {

connection.setRequestMethod("POST");

}

connection.setUseCaches(false);

connection.setInstanceFollowRedirects(true);

connection.setRequestProperty("Content-Type", "application/json; charset=" + requestEncoding);

connection.connect();

// POST请求

DataOutputStream out = new DataOutputStream(connection.getOutputStream());

out.write(jsonStr.getBytes(requesParamstEncoding));

out.flush();

out.close();

// 读取响应

BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));

StringBuilder sb = new StringBuilder("");

String lines;

while ((lines = reader.readLine()) != null) {

lines = new String(lines.getBytes(), responseEncoding);

sb.append(lines);

}

reader.close();

Integer statusCode = connection.getResponseCode();

// 断开连接

connection.disconnect();

map.put("success", "true");

msg = "访问接口成功";

map.put("responseBody", sb.toString());

map.put("responseStatusCode", statusCode.toString());

} catch (MalformedURLException e) {

exceptionMsg = e.getMessage();

e.printStackTrace();

} catch (UnsupportedEncodingException e) {

exceptionMsg = e.getMessage();

e.printStackTrace();

} catch (IOException e) {

exceptionMsg = e.getMessage();

e.printStackTrace();

} catch (Exception e) {

exceptionMsg = e.getMessage();

e.printStackTrace();

} finally {

map.put("msg", msg);

map.put("exceptionMsg", exceptionMsg);

}

return map;

}

/**

*

* @param finalUrl

* @param config

* @return

*/

private CloseableHttpClient createCloseableHttpClient(String finalUrl,RequestConfig config){

HttpClientBuilder builder = HttpClients.custom();

builder.setDefaultRequestConfig(config);

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

try {

SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {

// 信任所有

public boolean isTrusted(java.security.cert.X509Certificate[] chain, String authType) {

return true;

}

}).build();

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

builder.setSSLSocketFactory(sslsf);

} catch (KeyManagementException e) {

e.printStackTrace();

} catch (NoSuchAlgorithmException e) {

e.printStackTrace();

} catch (KeyStoreException e) {

e.printStackTrace();

} catch (Exception e) {

e.printStackTrace();

}

}

return builder.build();

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值