肥皂请求生成的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: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链接,我能够发送请求并获得故障码响应。我发现版本不匹配,但我不知道如何更改。
答案 0 :(得分:0)
我认为您必须使用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();
希望有帮助。
答案 1 :(得分:0)
MessageFactory factory = MessageFactory.newInstance(); --它将给出1.1版本的默认值
更改为以下内容以获取1.2版本的soap名称空间
MessageFactory工厂= MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
您可以在SAAJ教程中找到它