Вызов веб-службы SOAP с использованием SSL Proxy Http [Java] - PullRequest
0 голосов
/ 24 октября 2018

Я вызываю веб-сервис 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","****");

Спасибо!

1 Ответ

0 голосов
/ 24 октября 2018

Прежде всего попробуйте проверить, правильно ли установлен SSL-сертификат.Затем попробуйте добавить эту виртуальную машину 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 использовать системный прокси при вызове веб-службы.

...