Я новичок в 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>
Теперь у меня есть тестовый код, который отправляет запрос:
BackgroundCheckType type = new BackgroundCheckType(); //classes generated by JAXB from xsd
// fill type with data
webServiceTemplate.marshalSendAndReceive(objectFactory.createBackgroundCheck(type));
BackgroundCheckType
является корневым для XML-части внутри Payload
(идет в CDATA
) Насколько я понимаю, , spring-ws 'обертывает мои данные с помощью SOAP Envelope
и Body
. Я также могу создать классы OrderBackgroundCheck
и OrderBackgroundCheckRequest
и настроить его с помощью JAXB.
Но часть внутри второй Envelope
(с Sender
, Recipient
, TransactInfo
и так далее) выглядит связано с некоторым эталоном. Похоже, какой может быть создан и поддерживается какой-то структурой. И я не знаю, как и с какими рамками я могу это сделать.
Возможно, кто-то может помочь с этим или просто объяснить, что это такое? И почему SOAP-сообщение содержит две конверты? Спасибо!