Java Web服务返回完整、正确的答案,但响应源为空

Java Web服务返回完整、正确的答案,但响应源为空,java,web-services,jax-ws,Java,Web Services,Jax Ws,我正在使用调度客户端访问web服务。我的所有参数都是正确的,没有错误,并且,通过使用Wireshark检查响应,我可以肯定地看到在网络层收到了正确的响应。但是在java应用层,我的响应源是空的 public void testDispatch(QName serviceName, QName portName, String endpointAddress, String action) throws Exception { Service service = Service.crea

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

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)); 

}
public void testDispatch(QName serviceName、QName portName、String endpointAddress、String action)引发异常{
Service=Service.create(serviceName);
addPort(端口名,SOAPBinding.SOAP11HTTP_绑定,端点地址);
字符串requestXml=buildRequestXml();
Dispatch Dispatch=service.createDispatch(端口名、Source.class、service.Mode.MESSAGE);
dispatch.getRequestContext().put(BindingProvider.SOAPACTION\u URI\u属性,action);
源请求=新的StreamSource(新的StringReader(requestXml));
源响应=dispatch.invoke(请求);
Transformer copier=TransformerFactory.newInstance().newTransformer();
复印机转换(响应、新流结果(系统输出));
}
我试着转换成一个DOMResult,同样的,一个空的根节点。
有什么想法吗?

我会用代理API调用服务,然后比较Soap消息


名称空间中可能存在差异,这会阻止JAXB正确解组。

我的解决方案:

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