基于SSL的Java SOAP web服务,具有基本身份验证,连接被拒绝

基于SSL的Java SOAP web服务,具有基本身份验证,连接被拒绝,java,soap,ssl,https,Java,Soap,Ssl,Https,我试图用自己的小Java客户机通过SSL发送SOAP请求,但由于“Java.net.ConnectException:连接被拒绝”而失败。使用SOAPUI发送的相同请求没有失败,我从服务器获得了有效的响应 这是我正在尝试运行的代码: publicstaticvoidmain(字符串[]args)引发畸形的DurLexException{ System.setProperty("sun.security.ssl.allowUnsafeRenegotiation", "true");

我试图用自己的小Java客户机通过SSL发送SOAP请求,但由于“Java.net.ConnectException:连接被拒绝”而失败。使用SOAPUI发送的相同请求没有失败,我从服务器获得了有效的响应

这是我正在尝试运行的代码:

publicstaticvoidmain(字符串[]args)引发畸形的DurLexException{

    System.setProperty("sun.security.ssl.allowUnsafeRenegotiation", "true");
    SSLUtilities.trustAllHttpsCertificates();


   URL wsdlURL = new URL(MY_WSDL_LOCATION);

   QName serviceName = new QName(MY_QNAME, NAME_OF_SERVICE);

   Service service = Service.create(wsdlURL, serviceName);

   Order myOrder  = service.getPort(Order.class);

   BindingProvider portBP = (BindingProvider) myOrder;

   String urlUsed = (String) portBP.getRequestContext().
           get(BindingProvider.ENDPOINT_ADDRESS_PROPERTY);
       System.out.println("Using URL: " + urlUsed);



   ((BindingProvider)myOrder).getRequestContext().put(
           BindingProvider.USERNAME_PROPERTY, CORRECT_USERNAME);
       ((BindingProvider)myOrder).getRequestContext().put(
           BindingProvider.PASSWORD_PROPERTY, CORRECT_PASSWORD);



       AliveRequest aliveRequest = new AliveRequest();

       MerchantInfo merchInfo = new MerchantInfo();

       merchInfo.setMerchantId(CORRECT_MERCHANT_ID);

       aliveRequest.setMerchantInfo(merchInfo);




   AliveResponse aliveResponse = myOrder.alive(aliveRequest);

}

它因“java.net.ConnectException:连接被拒绝”而失败异常。当我使用SOAPUI从相同的WSDL生成请求时,使用相同的值填充相同的字段并输入相同的基本身份验证凭据,将返回有效的响应。

问题在于,我的Java客户端没有通过代理发送请求,所以我自己公司的防火墙阻止了它。与我自己的J当SOAPUI的代理设置设置设置为“自动”(默认)时,ava客户端SOAPUI实际检测系统的代理设置(可能读取系统环境变量)。解决方案是设置以下系统属性:

-Dhttps.proxySet=true
-Dhttps.proxyHost=MY_PROXY_HOST
-Dhttps.proxyPort=MY_PROXY_PORT

另外,如果我将System.out.println呈现的相同URL(“使用URL:+URLSUsed”)放在浏览器中,我可以看到SOAP响应,因此连接可以工作