【问题标题】:Web service returns a full, correct answer but the response Source is emptyWeb 服务返回完整、正确的答案,但响应源为空
【发布时间】:2025-12-08 05:30:01
【问题描述】:

我正在使用调度客户端来访问 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,同样的,一个空的根节点。 有什么想法吗?

【问题讨论】:

    标签: java web-services jax-ws


    【解决方案1】:

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

    名称空间中的差异可能会阻止 JAXB 正确解组。

    【讨论】:

      【解决方案2】:

      我对这个问题的工作解决方案:

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

      【讨论】:

        最近更新 更多