最近工作中需要和一个第三方公司进行https交互请求,但是对方的证书有一些问题,所以在发送请求的时候需要忽略证书验证。百度之后,发现已经有很多这方面的介绍,不过在使用其代码的时候总会有一些类不推荐使用了。下面是参考网上的常见方面并结合最新的官方API实现的一个最新方法(使用的主要jar包括httpclient-4.5.1.jar和httpcore-4.4.3.jar)。
public static List doPostByClient(String url, Map<?, ?> postData, Map<?, ?> header,
String encoding, long connectionTimeout, long soTimeout,boolean isNoSSL)
throws Exception {
CloseableHttpClient client = HttpClients.createDefault();
if(isNoSSL)
{
client = (CloseableHttpClient)wrapClient(client);
}
HttpPost httpPost = new HttpPost(url);
RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout((int) soTimeout).setConnectTimeout((int) connectionTimeout).build();//设置请求和传输超时时
httpPost.setConfig(requestConfig);
// 头部请求信息
if (header != null) {
Set<?> entrySet &#