Я создал API с использованием службы данных WSO2, которая возвращает объект JSON, мое клиентское приложение ожидает ответа SOAP, а не ответа JSON, поэтому я попытался использовать datamapper для изменения формата ответа с JSON на SOAP, но он возвращает только и формат XML без тела SOAP и конверта SOAP. Как справиться с этой проблемой?
Это формат ответа SOAP, который я хотел бы получить:
<soap:Envelope xmlns:soap = "http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<soap:Body>
<GetFacturesClientResponse xmlns = "http://tempuri.org/">
<GetFacturesClientResult>
<code>0</code>
<codeClient>P-2008-043681</codeClient>
<nom>na</nom>
<prenom>ouss</prenom>
</GetFacturesClientResult>
</GetFacturesClientResponse>
</soap:Body>
</soap:Envelope>
Но я получил такой ответ:
<GetFacturesClientResponse xmlns = "http://tempuri.org/">
<GetFacturesClientResult>
<code>0</code>
<codeClient>P-2008-043681</codeClient>
<nom>na</nom>
<prenom>ouss</prenom>
</GetFacturesClientResult>
</GetFacturesClientResponse>
И это мой код:
<datamapper config = "gov:datamapper/oussama.dmc" inputSchema = "gov:datamapper/oussama_inputSchema.json" inputType = "JSON" outputSchema = "gov:datamapper/oussama_outputSchema.json" outputType = "JSON" xsltStyleSheet = "gov:datamapper/oussama_xsltStyleSheet.xml"/>
Перед Respond Mediator
установите следующее свойство.
<property name = "messageType" value = "application/soap+xml" scope = "axis2"/>
Также в вашем разделе Datamapper outputType = "XML"
не JSON.
Обновлять
Как упоминал Офихий. Приведенный выше тип контента создаст сообщение SOAP 1.2, и если вам нужно сообщение SOAP 1.1, установите тип контента на text/xml
. Обычно клиенты поддерживают обе версии.
@ophychius да, это правильно. Я добавил детали в ответ, чтобы сделать его полным.
Пространство имен в нужном сообщении — мыло 1.1, для которого потребуется тип сообщения «текст/xml». Насколько я знаю, приведенный выше тип сообщения приведет к конверту мыла 1.2 по умолчанию.