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



我正在尝试使用我自己的小Java客户端通过SSL发送SOAP请求,并且它以" Java.net.connectexception:连接拒绝"而失败。使用SOAPUI发送的相同请求不会失败,我从服务器获得有效的响应。

这是我要运行的代码:

public static 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的代理设置设置为"自动"(默认)时,SOAPUI实际上检测系统的代理设置(可能是读取系统环境变量)。解决方案是设置以下系统属性:

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

最新更新