Java的。对Web服务的Soap请求

时间:2014-02-10 16:56:25

标签: java web-services soap request

我需要通过Java将此请求发送到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文件。

最好的方法是什么?如果你发布一些有用的链接会很高兴。我知道这是一个很受欢迎的问题,但我发现的一切都不适合我。

1 个答案:

答案 0 :(得分:1)

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