У меня есть веб-служба .NET, у которой есть метод, принимающий строку. В студии Mulesoft Anypoint я успешно построил поток, который принимает POST, передает строку POSTed в службу и возвращает обработанный результат.
Теперь я пытаюсь создать поток для аналогичной службы, за исключением того, что эта служба принимает настраиваемый объект, а не строку. Когда я использую пользовательский интерфейс 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>
Однако, когда я использую свой поток Mule и отбрасываю DataWeave перед потребителем веб-службы, он автоматически создает строку XML, которая не работает со службой. Когда я подключаю отладчик к службе, он показывает, что объект не был успешно построен / сопоставлен ... MyFirstString и MySecondString имеют значение null после вызова потребителя веб-службы.
Код 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>
Возвращенное сообщение об ошибке: «Ошибка десериализации тела сообщения запроса для операции« Преобразование ». OperationFormatter обнаружил недопустимое тело сообщения. Ожидается, что будет найден тип узла« Элемент »с именем« Преобразование »и пространством имен« '. Найден тип узла' Element 'с именем' EXTRACT_DETAIL 'и пространством имен' '. Полезные данные сообщения имеют тип: ElementNSImpl"
Итак, если я понимаю эту ошибку ... мой вопрос в том, как мне закодировать DataWeave для вывода в формате мыльного конверта, который использует интерфейс SOAP ... потому что кажется, что структура элементов, которую генерирует DataWeave, вызывает у меня проблемы? Большое спасибо.