我已经实现了一个在Web应用程序中使用的Web服务客户端(使用Spring),并且该客户端获得了一个响应,其中CXF挽救并给我一个错误消息。
错误消息是:
服务器无法识别HTTP标头SOAPAction的值
我发现了问题,但不知道我可以做些什么来调整我的网络服务响应处理。
下面的xml响应没有任何问题。
可以使用并且已被接受!
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:bar="http://www.dummyurl.com/service-v1.0/">
<soapenv:Header/>
<soapenv:Body>
<bar:StartSessionResponse>
<result>1</result>
</bar:StartSessionResponse>
</soapenv:Body>
</soapenv:Envelope>
服务实际返回:
失败并给我一个错误!
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<StartSessionResponse xmlns="www.dummyurl.com/service-v1.0/">
<result xmlns="">1</result>
</StartSessionResponse>
</soap:Body>
</soap:Envelope>
据我所知,差异在于放置
xmlns =“www.dummyurl.com/service-v1.0 / 元素,在成功的xml中它位于enveloppe中,在失败的xml中它是关于反应方法。
有没有办法说服CXF接受回复?或者服务是否给出了异常结果?
答案 0 :(得分:0)
假设第一个响应正确,服务在第二种情况下回复错误的响应。
在第一种情况下,“www.dummyurl.com/service-v1.0/”是元素的命名空间 - StartSessionResponse,结果不符合命名空间。在第二种情况下,StartSessionResponse与第一个示例具有相同的命名空间,但结果总共有一个不同的命名空间,取结果的xmlns =“”将使xml保持一致。