2011-07-03 60 views

回答

2

是的。
使用Dispatch<Source>來處理SOAP消息JAX-WS Dispatch

免責聲明:甚至沒有嘗試編譯代碼:

//xmlString has the xml message to send to the web service 
    StreamSource xmlMsg = new StreamSource(new StringReader(xmlString)); 
    //Create URL of web service. Place your URL for WSDL 
    URL wsdlURL = new URL("http://10.5.2.10:8080/path/service?wsdl"); 
    QName serviceName = new QName("http://example.com", "TrivialWebService"); 
    Service s = Service.create(wsdlURL, serviceName); 
    QName portName = new QName("http://example.com", "TrivialWebServicePort"); 
    //Service.Mode.MESSAGE works on SOAP msg (as opposed to Service.Mode.PAYLOAD) 
    Dispatch<Source> dispatch = createDispatch(portName, 
                 Source.class, 
                 Service.Mode.MESSAGE); 
    //Send request 
    Source reply = dispatch.invoke(xmlMsg); 
    DOMResult domResponse = new DOMResult(); 
    Transformer trans = TransformerFactory.newInstance().newTransformer(); 
    trans.transform(reply, domResponse); 
    //Now use DOM APIs 

您也可以指定是否要對HTTP有效載荷工作(如XML),即SOAP信封或SOAP有效載荷,即響應。
您將編寫代碼來處理原始XML(例如使用DOM)。
如果您使用JAX-WS或CXF,則可以使用此api。
對於AXIS2,也可以使用XML。只需要一些具體的apis
當然,也可以使用SAAJ。

+0

如果你可以爲這個類編寫一個小的示例代碼,這將是非常有用的。 –

+0

哪一類? '發貨'? – Cratylus

+0

是的,關於如何使用Dispatch 代碼在控制檯屏幕上獲取SOAP響應?這將是非常有幫助的。在此先感謝:) –

0

整個SOAP消息將被包含在HTTP請求對象(HttpServletRequest)中。這會給你頭,身體和其他一切。

相關問題