请求中的额外 SOAP 信息
Extra SOAP information in request
我是 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));
BackgroundCheckType
是 Payload
中 xml 部分的根(进入 CDATA
)
据我了解,spring-ws 'wraps' 我使用 SOAP Envelope
和 Body
的数据。我也可以创建 OrderBackgroundCheck
和 OrderBackgroundCheckRequest
类 并使用 JAXB 编组它。
但第二个 Envelope
内的部分(Sender
、Recipient
、TransactInfo
等)看起来与某些标准相关。看起来可以由某些框架生成和维护。而且我不知道如何以及使用什么框架可以做到这一点。
也许有人可以帮忙解决这个问题,或者只是解释一下它是什么?为什么 SOAP 消息包含两个信封?
谢谢!
是的,所有这些额外的东西,例如内部 Envelope
和 TransactInfo
都是与服务相关的。第三方服务正是以这种方式需要此信息。没有其他选项可以手动支持。
我是 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));
BackgroundCheckType
是 Payload
中 xml 部分的根(进入 CDATA
)
据我了解,spring-ws 'wraps' 我使用 SOAP Envelope
和 Body
的数据。我也可以创建 OrderBackgroundCheck
和 OrderBackgroundCheckRequest
类 并使用 JAXB 编组它。
但第二个 Envelope
内的部分(Sender
、Recipient
、TransactInfo
等)看起来与某些标准相关。看起来可以由某些框架生成和维护。而且我不知道如何以及使用什么框架可以做到这一点。
也许有人可以帮忙解决这个问题,或者只是解释一下它是什么?为什么 SOAP 消息包含两个信封? 谢谢!
是的,所有这些额外的东西,例如内部 Envelope
和 TransactInfo
都是与服务相关的。第三方服务正是以这种方式需要此信息。没有其他选项可以手动支持。