我调用 SOAP 网络服务进行双向 SSL 身份验证,通过代理。调用 soap-webservice 时出现以下错误。
com.sun.xml.ws.client.ClientTransportException: HTTP transport error: java.io.IOException: Unable to tunnel through proxy. Proxy returns "HTTP/1.1 403 Forbidden"
at com.sun.xml.ws.transport.http.client.HttpClientTransport.getOutput(HttpClientTransport.java:131)
at com.sun.xml.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:212)
at com.sun.xml.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:136)
at com.sun.xml.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:110)
我正在为 BindingProvider 设置以下属性
bp.getRequestContext().put("com.sun.xml.ws.developer.JAXWSProperties.SSL_SOCKET_FACTORY", socketFactory);
bp.getRequestContext().put("com.sun.xml.internal.ws.transport.https.client.SSLSocketFactory", socketFactory);
bp.getRequestContext().put("com.sun.xml.ws.transport.https.client.SSLSocketFactory", socketFactory);
bp.getRequestContext().put(JAXWSProperties.SSL_SOCKET_FACTORY, socketFactory);
bp.getRequestContext().put("proxySet","true");
bp.getRequestContext().put("http.proxyHost","host.com");
bp.getRequestContext().put("http.proxyPort","8080");
bp.getRequestContext().put("http.proxyUser","****");
bp.getRequestContext().put("http.proxyPassword","****");
bp.getRequestContext().put("https.proxyHost","host.com");
bp.getRequestContext().put("https.proxyPort","8080");
bp.getRequestContext().put("https.proxyUser","****");
bp.getRequestContext().put("https.proxyPassword","****");
谢谢!
最佳答案
首先尝试验证SSL证书是否安装正确。 然后尝试添加此 VM Args:
-Djavax.net.ssl.trustStore=locationOfYourTrustedStore.jks
-Dcom.sun.xml.ws.transport.http.client.HttpTransportPipe.dump=true
-Dcom.sun.xml.ws.transport.http.HttpAdapter.dump=true
-Dcom.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.dump=true
-Dcom.sun.xml.internal.ws.transport.http.HttpAdapter.dump=true
同时在您的实现代码中添加这一行:
System.setProperty("java.net.useSystemProxies", "true");
强制 Java 在调用 Web 服务时使用系统代理。
关于java - 使用 SSL 代理 Http [Java] 调用 SOAP 网络服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52965317/