У меня есть веб-служба .NET, у которой есть метод, который принимает строку. В студии Anypoint от Mulesoft я успешно построил поток, который принимает POST, передает строку POSTed в службу и возвращает обработанный результат.MuleSoft DataWeave - вызов службы SOAP через службу веб-сервиса
Теперь я пытаюсь создать поток для аналогичной службы, за исключением того, что эта служба принимает пользовательский объект, а не строку. Когда я использую пользовательский интерфейс SOAP для непосредственного тестирования моей службы, я передаю следующий XML и успешно создает объект в моей службе, а значения MyFirstString и MySecondString доступны этой службе.
SOAP UI XML:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/" xmlns:pra="http://schemas.datacontract.org/2004/07/Pra.Lib.Transformation">
<soapenv:Header/>
<soapenv:Body>
<tem:Transform>
<tem:transformationData>
<pra:MyFirstString>test1</pra:MyFirstString>
<pra:MySecondString>test2</pra:MySecondString>
</tem:transformationData>
</tem:Transform>
</soapenv:Body>
</soapenv:Envelope>
Однако, когда я использую мой Мул поток и падение мой DataWeave перед моей веб-службы потребителя, он автоматически строит XML-строку, которая не работает с сервисом , Когда я прикрепляю отладчик к сервису, он показывает, что объект не был создан/отображен успешно ... MyFirstString и MySecondString равны null после того, как сделан запрос пользователя Web Service Consumer.
код DataWeave:
%dw 1.0
%output application/xml
%namespace ns0 http://tempuri.org/
---
//Some output fields where skipped as the structure is too deep (more than 2 levels).
//To add missing fields click on the scaffold icon (second on the toolbar).
{
ns0#Transform: {
ns0#transformationData: {
Xml: "test1",
Xslt: "test2"
}
}
}
DataWeave выход:.
<?xml version='1.0' encoding='windows-1252'?>
<ns0:Transform xmlns:ns0="http://tempuri.org/">
<ns0:transformationData>
<Xml>test1</Xml>
<Xslt>test2</Xslt>
</ns0:transformationData>
</ns0:Transform>
Сообщение об ошибке Возвращается «Ошибка десериализации тела сообщения запроса для операции 'Transform' OperationFormatter обнаружил недопустимое тело сообщения. Ожидается найти тип узла «Элемент» с именем «Преобразование» и пространство имен «http://tempuri.org/». Найденный тип узла «Элемент» с именем «EXTRACT_DETAIL» и пространство имен ». Полезная нагрузка сообщения имеет тип: ElementNSImpl«
Итак, если я понимаю эту ошибку ... мой вопрос заключается в том, как я могу кодировать DataWeave для вывода в формате soap-конверта, который использует интерфейс SOAP ... потому что создается структура элементов DataWeave, что вызывает проблемы? Большое спасибо.