如何将 SoapResponse 转换为 pojos(Java 类) 和 Class 对象到 Soap 请求

How to convert SoapResponse to pojos(Java classes) and Class Objects to Soap Request

我想阅读 Soap 响应 - 如何将 soap 响应转换为 pojos(Class 对象) 我还想发送 soap post 请求 - 如何将 class 对象转换为 soap 请求。

我需要两种方式,你能帮忙吗

如果要将 SOAP 消息编组和解组为 POJO,可以使用 xjc to generate JAXB bindings from the schema https://www.w3.org/2003/05/soap-envelope/

然而,SOAP 通常不使用 JAXB 解组,而是通过专门的框架:SOAP with Attachments API for Java。该框架还可以解组带有附件的 SOAP:它是一个 multipart/related MIME 文档,带有 XML SOAP 消息和一系列附件。

要使用 SAAJ 反序列化,您可以使用 MessageFactory 并提供消息的 MIME headers 和输入流:

final InputStream is = ...;
final MimeHeaders mimeHeaders = ...;
final SOAPMessage soap = MessageFactory.newInstance().createMessage(mimeHeaders, is);

如果您有 SOAPMessage,您可以通过 getSOAPPartgetSOAPBodygetSOAPHeader 访问您感兴趣的部分,其中 return 您 DOM 接口,您可以使用 JAXB 将其转换为 POJO。

要序列化,您只需创建一个新的 SOAPMessage,填充它并调用 writeTo 方法:

final SOAPMessage soap = MessageFactory.newInstance().createMessage();
... // fill the message
final OutputStream os = ...;
soap.writeTo(os);