【发布时间】:2018-10-24 21:04:35
【问题描述】:
现在请帮忙, 我想通过 SOAP 调用 api 并使用 httpclient 4.5.5
我的代码
static String callApi(String url, String requestXml)
{
String responseXml = "";
CloseableHttpClient httpClient = null;
HttpPost httpPost;
try
{
httpClient = HttpClients.createDefault();
httpPost = new HttpPost(url);
httpPost.setHeader("Content-Type", "text/xml; charset=utf-8");
httpPost.setHeader("x-ibm-client-id", Config.csp.validKey);
StringEntity entiry = new StringEntity(requestXml, "UTF-8");
httpPost.setEntity(entiry);
HttpResponse response = httpClient.execute(httpPost);
HttpEntity entity = response.getEntity();
responseXml = EntityUtils.toString(entity, "UTF-8");
}
catch (Exception ex)
{
log.error("", ex);
}
finally
{
try
{
if (httpClient != null)
httpClient.close();
}
catch (Exception ex)
{
log.error("", ex);
}
}
return responseXml;
}
当我调试时显示错误
javax.net.ssl.SSLPeerUnverifiedException: 的证书与任何主题替代名称都不匹配:[*.domain.vn, domain.vn] 在 org.apache.http.conn.ssl.SSLConnectionSocketFactory.verifyHostname(SSLConnectionSocketFactory.java:467) ~[httpclient-4.5.5.jar:4.5.5] 在 org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:397) ~[httpclient-4.5.5.jar:4.5.5] 在 org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:355) ~[httpclient-4.5.5.jar:4.5.5] 在 org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142) ~[httpclient-4.5.5.jar:4.5.5] 在 org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:373) ~[httpclient-4.5.5.jar:4.5.5] 在 org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:381) ~[httpclient-4.5.5.jar:4.5.5] 在 org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:237) ~[httpclient-4.5.5.jar:4.5.5] 在 org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185) ~[httpclient-4.5.5.jar:4.5.5] 在 org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89) ~[httpclient-4.5.5.jar:4.5.5] 在 org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:111) ~[httpclient-4.5.5.jar:4.5.5] 在 org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185) ~[httpclient-4.5.5.jar:4.5.5] 在 org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83) ~[httpclient-4.5.5.jar:4.5.5] 在 org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108) ~[httpclient-4.5.5.jar:4.5.5]
请帮忙。非常感谢
【问题讨论】:
-
我强烈建议您使用实际上是为 SOAP 设计的库(例如 CXF),而不是只为基本 HTTP 设计的库。至于您的错误:这看起来像是无效的 SSL 证书
-
看到这可能对你有帮助:stackoverflow.com/questions/40806615/…
-
非常感谢您的支持。 @Eugène Adell,是的,没错。我找到了我的问题的答案。谢谢。