Посредник WSO2 PayloadFactory не преобразует параметры - PullRequest
0 голосов
/ 11 декабря 2018

Мне не удалось получить посредник PayloadFactory для преобразования входных аргументов в то, что ожидает служба.

У меня есть требование поддерживать устаревшие API-интерфейсы, просматривая запрос ввода и предоставляя значения по умолчанию для новых параметров или выполняя тип данныхпреобразования в слое WSO2.В целях PoC я пытаюсь отправить входной аргумент val, пока служба ожидает значение, но я не вижу, чтобы входной аргумент правильно достигал службы.Ниже приведена последовательность, которую я использую:

<definitions xmlns="http://ws.apache.org/ns/synapse" name="sample1">
    <sequence name="sample1">
        <in>
            <!-- using payloadFactory mediator to transform the request message -->
            <payloadFactory media-type="xml">
                <format>
                    <tem:GetData xmlns:tem="http://localhost/LegacyService/Service1.svc">
                        <tem:value>$1</tem:value>
                    </tem:GetData>
                </format>
                <args>
                    <arg xmlns:tem="http://localhost/LegacyService/Service1.svc" expression="//tem:val"/>
                </args>
            </payloadFactory>
        </in>

        <send/>
    </sequence>
</definitions>

Вот веб-запрос, который я делаю с использованием SOAPUI:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">
   <soapenv:Header/>
   <soapenv:Body>
      <tem:GetData>
         <!--Optional:-->
         <tem:val>2000</tem:val>
      </tem:GetData>
   </soapenv:Body>
</soapenv:Envelope>

Как я могу устранить эту проблему?

1 Ответ

0 голосов
/ 13 декабря 2018

Пространство имен в запросе и пространство имен в payloadfactory при поиске значения из запроса различаются.Поэтому ваше выражение ищет элемент, который не существует в запросе.

xmlns:tem="http://localhost/LegacyService/Service1.svc" (аргумент payloadFactory)

против

xmlns:tem="http://tempuri.org/" (сообщение запроса)

Вы должны убедиться, что выражение в вашем аргументе соответствует сообщению запроса

<args>
       <arg xmlns:tem="http://tempuri.org/" expression="//tem:val"/>
</args>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...