2010-05-04 58 views
3

我正在使用調度客戶端來訪問Web服務。我所有的參數都是正確的,沒有錯誤,並且使用Wireshark檢查響應,我可以確定地看到在網絡層收到了正確的響應。但在Java應用程序層,我的響應Source是空的。Web服務返回完整的正確答案,但響應源爲空

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,同樣的東西,一個空的根節點。 任何想法?

回答

0

我會用Proxy API調用服務,然後比較Soap消息。

命名空間中可能存在差異,導致JAXB無法正確解組。

0

的問題我工作的解決方案:

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