【问题标题】:Soap version mismatch in javajava中的soap版本不匹配
【发布时间】:2018-12-07 00:02:57
【问题描述】:

Soap 请求生成的 Java 应用程序 [失败]

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
   xmlns:dir="http://xxxxxxxxxx">
  <soapenv:Body>
    <xxxxxxxxxxx>       
  </soapenv:Body>
</soapenv:Envelope>

SoapUI 生成的 Soap-request [成功]

 <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" 
   xmlns:dir="http://xxxxxxxxxx">
 <soap:Header/>
   <soap:Body>
     <dir:ping/>
   </soap:Body>
 </soap:Envelope>

如何将命名空间 uri“http://schemas.xmlsoap.org/soap/envelope/”更改为“http://www.w3.org/2003/05/soap-envelope”。我还没有创建任何客户端,我刚刚创建了 java 类并运行我能够发送请求并获得错误代码响应,因为上面的 uri 链接。我发现是版本不匹配,但我不知道如何更改。

【问题讨论】:

  • 添加你的 java soap 客户端代码 sn-p 没有它,很难回答。
  • Link to code snippet 我在此链接中显示的答案中使用了相同的代码.....

标签: java soap


【解决方案1】:

MessageFactory factory = MessageFactory.newInstance(); ------ 会默认1.1版本

改为following获取1.2版本的soap命名空间

MessageFactory 工厂 = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);

您可以在 SAAJ 教程中找到它

【讨论】:

    【解决方案2】:

    我觉得您必须使用Statckoverflow 问题中提供的默认 SOAP 实现(即 SOAP 1.2)。您的 Web 服务可能需要 SOAP 1.1。

    如果您可以更改它SOAPMessageFactory1_1Impl 实现,它应该可以解决您的问题。您的命名空间将更改为 xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"

    callSoapWebService 方法的第一行更改为以下,它应该可以解决问题。

    SOAPMessage soapMessage = SOAPMessageFactory1_1Impl.newInstance().createMessage();

    希望对你有帮助。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-26
    相关资源
    最近更新 更多