2015-01-26 98 views
0

我是SOAP新手,也许我的问题有点简单或奇怪。 在我的应用程序(spring-ws,JAXB)中,我使用hr-xml标准与客户端背景检查的第三方服务集成。完整的请求看起来像:请求中额外的SOAP信息

<?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> 

现在我有它发送的请求的测试代码:内Payload

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

BackgroundCheckType是XML部分根(在CDATA云) 据我了解,spring-ws用SOAP EnvelopeBody'包装'我的数据。我也可以创建OrderBackgroundCheckOrderBackgroundCheckRequest类,并使用JAXB编写它。

但第二部分Envelope(与Sender,Recipient,TransactInfo等)看起来与某些标准有关。看起来像哪些可以由一些框架生成和维护。我不知道如何以及我可以做什么框架。

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

回答

0

是的,所有这些额外的东西,如内部EnvelopeTransactInfo是服务相关的。第三方服务完全需要这种信息。没有其他选项可以期望手动支持。