请求第三方https接口
-
生成证书
根据第三方提供的.cer证书,我们可以用JDK的keytool工具生成keystore密钥库文件
a. keytool -import -v -file E:\cer\esb.*****-p.com.cn.cer -keystore F:tomcat.keystor
![]()
b. 输入密码(自己给的密码)
![]()
c.回车提示是否信任此证书(y信任)
![]()
-
代码请求https接口
public static String httpsPost(String url, String json) {
InputStream inputStream = null;
String jsonString = "";
try {
DefaultHttpClient client = new DefaultHttpClient();
CloseableHttpClient httpClient = HttpClients.createDefault();
client.getParams().setParameter(ClientPNames.COOKIE_POLICY, CookiePolicy.BROWSER_COMPATIBILITY);
client.getParams().setParameter(CoreProtocolPNames.USER_AGENT,
" Mozilla/5.0 (Windows NT 6.2; rv:18.0) Gecko/20100101 Firefox/18.0");// 获得密匙库
KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
ClassPathResource resource = new ClassPathResource("tomcat.keystore");// 获取输入流
inputStream = resource.getInputStream();// 密匙库的密码
trustStore.load(inputStream, "123456".toCharArray());// 注册密匙库
SSLSocketFactory socketFactory = new SSLSocketFactory(trustStore);// 不校验域名
socketFactory.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
Scheme sch = new Scheme("https", 443, socketFactory);
client.getConnectionManager().getSchemeRegistry().register(sch);HttpPost httppost = new HttpPost(url);
StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON);
httppost.setEntity(entity);// 发起请求
HttpResponse response = client.execute(httppost);// 获取响应
HttpEntity resEntity = response.getEntity();
jsonString = EntityUtils.toString(resEntity, "utf-8");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return jsonString;
}



浙公网安备 33010602011771号