postman 验证接口时候,如果是https请求,会报错:Self-signed SSL certificates are being blocked,可以点击右上角settings,把on改成off。
在用httpclient请求的时候如何绕过证书呢?
需要创建一个CloseableHttpClient对象。
创建HTTPpost/get对象,setHeader。
创建StringEntity setEntit,请求体。
执行execute请求,返回CloseableHttpResponse对象
编码:
/**
* https请求封装
* @return
*/
public static CloseableHttpClient createSSLClientDefault(){
try {
SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy(){
//信任所有
public boolean isTrusted(X509Certificate[] chain, String authType) {
return true;
}
}).build();
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext);
return HttpClients.custom().setSSLSocketFactory(sslsf).build();
} catch (KeyManagementException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (KeyStoreException e) {
e.printStackTrace();
}
return HttpClients.createDefault();
}
调用接口:
CloseableHttpClient httpClient = createSSLClientDefault();
HttpPost post = new HttpPost(url);
post.setHeader("Content-Type", "application/json");
post.setHeader("cache-control","no-cache");
post.setHeader("Authorization","***");
RequestBody requestBody =buildQueryDataBody();
StringEntity body = new StringEntity(CommonHelper.toJson(requestBody), "UTF-8");
post.setEntity(body);
CloseableHttpResponse httpResponse = httpClient.execute(post);
HttpEntity entity = httpResponse.getEntity();
String response = EntityUtils.toString(entity,"utf-8");