繁体   English   中英

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

[英]Java SOAP web service over SSL with basic authentication, connection refused

我正在尝试使用自己的小型Java客户端通过SSL发送SOAP请求,但失败,并显示“ java.net.ConnectException:连接被拒绝”。 用SOAPUI发送的相同请求不会失败,我从服务器获得了有效响应。

这是我要运行的代码:

公共静态void main(String [] args)抛出MalformedURLException {

    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客户端没有通过代理发送请求,因此我自己公司的防火墙阻止了它。 与我自己的Java客户端不同,当SOAPUI的代理设置设置为“自动”(默认)时,SOAPUI实际上会检测系统的代理设置(可能读取系统环境变量)。 解决方案是设置以下系统属性:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM