CXF webservice客户端,如何处理来自被调用的webservice的响应?

时间:2011-09-17 10:14:02

标签: java soap cxf webservice-client

我已经实现了一个在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接受回复?或者服务是否给出了异常结果?

1 个答案:

答案 0 :(得分:0)

假设第一个响应正确,服务在第二种情况下回复错误的响应。

在第一种情况下,“www.dummyurl.com/service-v1.0/”是元素的命名空间 - StartSessionResponse,结果不符合命名空间。在第二种情况下,StartSessionResponse与第一个示例具有相同的命名空间,但结果总共有一个不同的命名空间,取结果的xmlns =“”将使xml保持一致。