对于我当前的项目,我需要实现一个调用远程ws的soap客户机,该远程ws发送一个空响应作为其返回。响应如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<wsa:Action xmlns:wsa="http://www.w3.org/2005/08/addressing">http://www.starstandards.org/webservices/2005/10/transport/operations/ProcessMessageResponse</wsa:Action>
<wsa:RelatesTo xmlns:wsa="http://www.w3.org/2005/08/addressing">[object Object]</wsa:RelatesTo>
</soap:Header>
<soap:Body>
<m:ProcessMessageResponse xmlns:m="http://www.starstandards.org/webservices/2005/10/transport"/>
</soap:Body>
</soap:Envelope>
不幸的是,apache cxf引发了一个异常:
javax.xml.ws.soap.SOAPFaultException: Response message did not contain proper response data. Expected: {http://www.starstandards.org/webservices/2005/10/transport}ProcessMessageResponse
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:161)
at com.sun.proxy.$Proxy76.processMessage(Unknown Source)
[...]
Caused by: org.apache.cxf.endpoint.ClientImpl$IllegalEmptyResponseException: Response message did not contain proper response data. Expected: {http://www.starstandards.org/webservices/2005/10/transport}ProcessMessageResponse
at org.apache.cxf.endpoint.ClientImpl.processResult(ClientImpl.java:663)
at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:532)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:432)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:347)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:305)
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:139)
... 3 more
对我来说,xml似乎是正确的,而cxf无法“看到”processmessageresponse。但也许我只是看了太久,我没有看到明显的问题。。。
目前使用的cxf版本:3.1.18我也在3.2.14中尝试过,但结果相同。
暂无答案!
目前还没有任何答案,快来回答吧!