请求中的额外SOAP信息

时间:2015-01-26 19:39:17

标签: java xml soap jaxb spring-ws

我是SOAP的新手,也许我的问题有点简单或奇怪。 在我的应用程序(spring-ws,JAXB)中,我使用hr-xml标准集成了第三方服务以进行客户端后台检查。完整请求如下:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope">
   <SOAP-ENV:Body>
      <OrderBackgroundCheck>
         <OrderBackgroundCheckRequest>
            <Envelope version="01.00">
               <Sender>
                  <Id>DDF</Id>
                  <Credential>USERNAME</Credential>
               </Sender>
               <Recipient>
                  <Id>Some app</Id>
               </Recipient>
               <TransactInfo transactType="request" environment="alpha" mode="test">
                  <TransactId>1</TransactId>
                  <TimeStamp>2009-04-30T12:28:23</TimeStamp>
               </TransactInfo>
               <Packet>
                  <PacketInfo packetType="request">
                     <PacketId>1</PacketId>
                     <Action>OrderBackgroundCheck</Action>
                     <Manifest>BackgroundCheck.xsd</Manifest>
                  </PacketInfo>
                  <Payload>
                     <![CDATA[...]]>
                  </Payload>
               </Packet>
            </Envelope>
         </OrderBackgroundCheckRequest>
      </OrderBackgroundCheck>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

现在我有一个发送请求的测试代码:

BackgroundCheckType type = new BackgroundCheckType(); //classes generated by JAXB from xsd
// fill type with data
webServiceTemplate.marshalSendAndReceive(objectFactory.createBackgroundCheck(type));

BackgroundCheckTypePayload内xml部分的root(进入CDATA) 据我所知,春天的包裹&#39;我的数据包含SOAP EnvelopeBody。我也可以创建OrderBackgroundCheckOrderBackgroundCheckRequest类,并使用JAXB对其进行编组。

但是第二个Envelope内部(SenderRecipientTransactInfo等)看起来与某些标准相关。看起来哪些可以由某个框架生成和维护。我不知道如何以及我可以用什么框架做到这一点。

也许有人可以提供帮助,或者只是解释一下它是什么?为什么SOAP消息包含两个信封? 谢谢!

1 个答案:

答案 0 :(得分:0)

是的,所有这些额外的内容,例如内部EnvelopeTransactInfo都与服务相关。第三方服务需要此信息。没有其他选择可以手动支持。