当前位置: 首页 > 知识库问答 >
问题:

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

诸葛亮
2023-03-14

我试图用我自己的小Java客户端通过SSL发送一个SOAP请求,但它以“Java.net.connectException:Connection referend”失败。用SOAPUI发送的相同请求不会失败,我会从服务器得到有效的响应。

这是我试图运行的代码:

    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:Connection Referend”异常失败。当我使用SOAPUI从相同的WSDL构建请求,用相同的值填充相同的字段并输入相同的基本身份验证凭据时,将返回有效的响应。

共有1个答案

岳泳
2023-03-14

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

-Dhttps.proxySet=true
-Dhttps.proxyHost=MY_PROXY_HOST
-Dhttps.proxyPort=MY_PROXY_PORT
 类似资料:
  • 问题内容: Jsoup中是否可以通过基本访问身份验证从网站加载文档? 问题答案: 使用HTTP基本访问身份验证时,您需要发送标头以及一个值。 例如(在Apache Commons Codec Base64的 帮助下): (为了简便起见,省略了字符编码的明确说明,因为登录名和密码通常很简单;此外,Base64总是生成字节)

  • 我试图连接到一个需要基本身份验证的网站,但我得到了一个java。网ConnectException:拒绝连接:连接,我无法获取内容,基本身份验证依赖于Base64编码的“Authorization”标头,其值由单词“Basic”后跟空格,后跟Base64编码的名称:password组成。当然,使用浏览器我可以得到我想要的正确的json文件 我在另一个程序中得到了相同的结果: 这里是printSta

  • 我正在运行带有公开WebSocketendpoint的服务器。下面是我的: 问题是如何使用或或查询参数实现建立WS连接的身份验证? 更好的选择是避免使用Spring Security。 多谢了。

  • 问题内容: 我必须 使用 HTTP Basic身份验证从http服务器下载和解析XML文件。现在,我这样做: 但是以这种方式,我无法从具有http身份验证的服务器获取xml(或者我只是根本不知道该文档)文档。 如果您能向我展示实现我的目标的最好,最简单的方法,我将不胜感激。 问题答案: 您可以使用。例如: 这将设置默认值,并将在 所有 请求中使用。显然,当您不需要所有请求的凭据或多个不同的凭据(可

  • 我不熟悉RESTful API的概念。 我正在为一家在线商店设计一个RESTful API。 我没有正确理解SSL上的基本HTTP身份验证的概念。 这是否意味着对于每个请求,用户都必须再次输入他/她的用户名和密码? 有人能详细解释它的功能和用途吗?

  • 问题内容: 在(带有)中,我尝试使用以下语句通过基本身份验证访问我的网页: 但是Google Chrome浏览器在控制台中向我发出以下警告: [弃用]其URL包含嵌入式凭据(例如https://user:pass@host/)的子资源请求被阻止。有关更多详细信息,请参见https://www.chromestatus.com/feature/5669008342777856。 在标记的链接中提到该