首页 > 解决方案 > 如何将 SoapResponse 转换为 pojos(Java 类)和将类对象转换为 Soap 请求

问题描述

我想阅读肥皂响应-如何将肥皂响应转换为 pojos(类对象) 另外我想发送肥皂发布请求-如何将类对象转换为肥皂请求。

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

标签: javasoapjaxbsoap-clientsaaj

解决方案


如果要将 SOAP 消息编组和解组到 POJO,可以使用xjc从 schema 生成 JAXB 绑定https://www.w3.org/2003/05/soap-envelope/

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

要使用 SAAJ 进行反序列化,请使用 aMessageFactory并提供消息的 MIME 标头和输入流:

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

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

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

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

推荐阅读