2014-02-10 144 views
0

我需要通過Java到該請求發送給Web服務:Java。 SOAP請求的Web服務

> <soapenv:Envelope 
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
> xmlns:gen="http://www.bossmedia.com/wsdl/genericportaladapter"> 
> <soapenv:Header/> <soapenv:Body> 
>  <gen:GetPlayerDetails> 
>   <request> 
>    <systemUID>?</systemUID> 
>    <sessionID>?</sessionID> 
>   </request> 
>  </gen:GetPlayerDetails>  
</soapenv:Body> </soapenv:Envelope> 

什麼是做到這一點,並保存響應,我的計算機上的XML文件的最好方法。

這樣做的最佳方法是什麼?如果你發佈一些有用的鏈接,會很高興。我知道這是一個受歡迎的問題,但我發現的一切都不適合我。

回答

0

JDK文檔合理地告訴你如何做到這一點,但它確實涉及到跳過一些環節,所以這裏有一些示例代碼讓你開始。

如果你打算做這麼多,你可能想把它包裝在一些實用工具類中,以大大簡化這一點。

注意: 我不確定此代碼是否完美,但它會爲您提供所有正確的操作。

祝你好運!

MessageFactory messageFactory = MessageFactory.newInstance(); 
TransformerFactory transformerFactory = TransformerFactory.newInstance(); 
SOAPConnectionFactory sfc = SOAPConnectionFactory.newInstance(); 

Document document = null; // load your document from somewhere 

// make your request message 
SOAPMessage requestMessage = messageFactory.createMessage(); 

/// copy your message into the soap message 
Transformer transformer = transformerFactory.newTransformer(); 
DOMSource source = new DOMSource(document); 
DOMResult result = new DOMResult(requestMessage.getSOAPBody()); 
transformer.transform(source, result); 

requestMessage.saveChanges(); 


// make the SOAP call 
URL endpoint = new URL("http://example.com/endpoint"); 
SOAPConnection connection = sfc.createConnection(); 
SOAPMessage responseMessage = connection.call(requestMessage, endpoint); 

// do something with the response message 
ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); 
responseMessage.writeTo(outputStream); 
System.out.println(new String(outputStream.toByteArray())); 
+0

謝謝,我會盡力的! – mark2

+0

@ mark2它是如何爲你解決的? – lscoughlin