public static SSLContext createIgnoreVerifySSL() throws NoSuchAlgorithmException, KeyManagementException {
SSLContext sc = SSLContext.getInstance("TLSv1.2");
// 实现一个X509TrustManager接口,用于绕过验证,不用修改里面的方法
X509TrustManager trustManager = new X509TrustManager() {
@Override
public void checkClientTrusted(
java.security.cert.X509Certificate[] paramArrayOfX509Certificate,
String paramString) throws CertificateException {
}
@Override
public void checkServerTrusted(
java.security.cert.X509Certificate[] paramArrayOfX509Certificate,
String paramString) throws CertificateException {
}
@Override
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
};
sc.init(null, new TrustManager[] { trustManager }, null);
return sc;
}
/**
* 封装post请求接口
*
* @param url
* @param param
* @param headerMap
* @return
* @throws NoSuchAlgorithmException
* @throws KeyManagementException
*/
public static String postFk(String url, Map<String, Object> param, Map<String, String> headerMap) throws Exception {
System.out.println(JSON.toJSON(param).toString());
//设置响应时间
RequestConfig requestConfig = RequestConfig.custom().setConnectionRequestTimeout(5000).setSocketTimeout(5000)
.setConnectTimeout(5000).build();
//采用绕过验证的方式处理https请求
SSLContext sslcontext = createIgnoreVerifySSL();
//设置协议http和https对应的处理socket链接工厂的对象
Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create()
.register("http", PlainConnectionSocketFactory.INSTANCE)
.register("https", new SSLConnectionSocketFactory(sslcontext))
.build();
// 创建 HttpClient的时候,设置SSLConnectionSocketFactory实例
PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager(socketFactoryRegistry);
HttpClients.custom().setConnectionManager(connManager);
CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(connManager).build();
String resultString = "";
CloseableHttpResponse response = null;
try {
// 创建http POST请求
HttpPost httpPost = new HttpPost(url);
httpPost.setConfig(requestConfig);
httpPost.setHeader("Content-Type","application/json;charset=utf-8");
if (headerMap != null) {
for (String key : headerMap.keySet()) {
httpPost.setHeader(key, headerMap.get(key));
}
}
// 设置参数
StringEntity entity = new StringEntity(JSON.toJSONString(param), "UTF-8");
httpPost.setEntity(entity);
// 执行请求
response = httpClient.execute(httpPost);
log.info("POST - url:{},response:{}", url, response);
// 判断返回状态是否为200
resultString = EntityUtils.toString(response.getEntity(), "UTF-8");
if (response.getStatusLine().getStatusCode() != 200) {
log.info("POST请求报错,出参:" + resultString);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (response != null) {
response.close();
}
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return resultString;
}
07-08
2万+
12-09
2724