【问题标题】:Issue with wsimport authentication when generating SOAP Java client生成 SOAP Java 客户端时出现 wsimport 身份验证问题
【发布时间】:2018-09-20 06:59:00
【问题描述】:

我使用以下命令为 java 生成 Web 服务客户端文件。

wsimport -keep http://test.com/test?wsdl -xauthfile auth.txt

以下是auth.txt

http://user:password@ip:port//path

但是,password 具有特殊字符,例如 abcw@sdsds。 所以我得到了错误的格式错误。所以我编码了abcw%40sdsds之类的密码。但是,由于解析导致密码错误,现在出现身份验证错误。

有没有办法处理这种情况?

【问题讨论】:

    标签: java soap soap-client wsimport


    【解决方案1】:

    在网上查了一下,发现这个bug其实已经在最新版本中修复了。但我仍然遇到同样的问题。您可以参考以下链接以获取有关该错误的信息。

    https://github.com/javaee/metro-jax-ws/issues/1101

    所以我最终使用 Java 中的 HTTP 客户端通过 NTLM 身份验证发出了自定义 HTTP 请求。

    String bodyAsString = ""; //Provide Input SOAP Message
    CredentialsProvider credsProvider = new BasicCredentialsProvider();
    credsProvider.setCredentials(AuthScope.ANY,
    new NTCredentials("UserName", "Password", "Host", "Domain"));
    HttpClient client = HttpClientBuilder.create().setDefaultCredentialsProvider(credsProvider).build();
    HttpPost post = new HttpPost("URL"); //Provide Request URL
    try 
    {
       StringEntity input = new StringEntity(bodyAsString);
       input.setContentType("text/xml; charset=utf-8");
       post.setEntity(input);
       post.setHeader("Content-type", "text/xml; charset=utf-8");
       post.setHeader("SOAPAction", ""); //Provide Soap action
    
       org.apache.http.HttpResponse response = client.execute(post);
       HttpEntity responseEntity = response.getEntity();
       if (responseEntity != null) 
       {
          return EntityUtils.toString(responseEntity);
       }
    }
    

    我从以下 github 链接获得了上述解决方案 https://github.com/sujithtw/soapwithntlm

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-08
      • 2018-06-17
      • 1970-01-01
      • 1970-01-01
      • 2015-03-01
      相关资源
      最近更新 更多