Web服务返回完整正确的答案但响应Source为空

时间:2010-05-04 07:37:57

标签: java web-services jax-ws

我正在使用调度客户端来访问Web服务。我的所有参数都是正确的,没有错误,并且通过Wireshark检查响应,我可以肯定地看到在网络层接收到正确的响应。但是在java应用程序层,我的响应Source是空的。

public void testDispatch(QName serviceName, QName portName, String endpointAddress, String action) throws Exception {

    Service service = Service.create(serviceName);
    service.addPort(portName, SOAPBinding.SOAP11HTTP_BINDING, endpointAddress);

    String requestXml = buildRequestXml();

    Dispatch<Source> dispatch = service.createDispatch(portName, Source.class, Service.Mode.MESSAGE);
    dispatch.getRequestContext().put(BindingProvider.SOAPACTION_URI_PROPERTY, action);

    Source request = new StreamSource(new StringReader(requestXml));
    Source response = dispatch.invoke(request);

    Transformer copier = TransformerFactory.newInstance().newTransformer();
    copier.transform(response, new StreamResult(System.out)); 

}

我试图转换为DOMResult,同样的事情,一个空的根节点。 有什么想法吗?

2 个答案:

答案 0 :(得分:0)

我会使用Proxy API调用该服务,然后比较Soap消息。

命名空间可能存在差异,导致JAXB无法正常解组。

答案 1 :(得分:0)

我解决问题的方法是:

StreamResult xmlOutput = new StreamResult(new StringWriter());
Transformer copier = TransformerFactory.newInstance().newTransformer();
copier.transform(responseStream, xmlOutput);
System.out.println(xmlOutput.getWriter().toString());