我需要通过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文件。
最好的方法是什么?如果你发布一些有用的链接会很高兴。我知道这是一个很受欢迎的问题,但我发现的一切都不适合我。
答案 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()));