WSO2 ESB - ответ об ошибке, когда пост-запрос - приложение типа контента / x-www-form-urlencoded - PullRequest
0 голосов
/ 17 апреля 2019

Я использую WSO2 EI 6.3v. Я хочу передать данные application / x-www-form-urlencoded поставщику резервационного отеля. В слышу, я положил свой код и ответ.

CODE

<inSequence>
        <log category="WARN" level="full">
            <property name="API BEGIN" value="Test_Supplier API"/>
        </log>
        <payloadFactory media-type="xml">
            <format>
                <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
                    <soapenv:Body>
                        <HotelFindRequest xmlns="">
                            $1
                        </HotelFindRequest>
                    </soapenv:Body>
                </soapenv:Envelope>
            </format>
            <args>
                <arg evaluator="xml" expression="$env/*[local-name()='Body']/*[local-name()='HotelFindRequest']/*"/>
            </args>
        </payloadFactory>
        <property expression="$env/*[local-name()='Body']/*" name="xmlbody" scope="default" type="STRING"/>
        <log>
            <property expression="$ctx:xmlbody" name="Body======="/>
        </log>
        <property name="messageType" scope="axis2" type="STRING" value="application/x-www-form-urlencoded"/>
        <property expression="$body" name="payload" scope="default" type="STRING"/>
        <property name="uri.var.url" scope="default" type="STRING" value="http://test.xmlhub.com/testpanel.php/action/findhotel"/>
        <call>
            <endpoint>
                <address format="pox" uri="http://test.xmlhub.com/testpanel.php/action/findhotel?XML={xmlbody}"/>
            </endpoint>
        </call>
        <respond/>
</inSequence>

Журнал кузова

<HotelFindRequest>
<Authentication>
    <AgentCode>xxxxxxx</AgentCode>
    <UserName>xxxxx</UserName>
    <Password>xxxxxx</Password>
</Authentication>
<Booking>
    <ArrivalDate>22/05/2019</ArrivalDate>
    <DepartureDate>25/05/2019</DepartureDate>
    <CountryCode>AE</CountryCode>
    <City>968</City>
    <GuestNationality>LK</GuestNationality>
    <HotelRatings>
        <HotelRating>1</HotelRating><HotelRating>2</HotelRating>
        <HotelRating>3</HotelRating><HotelRating>4</HotelRating>
        <HotelRating>5</HotelRating>
    </HotelRatings>
    <Rooms>
        <Room>
            <Type>Room-1</Type>
            <NoOfAdults>2</NoOfAdults>
            <NoOfChilds>0</NoOfChilds>
        </Room>
        <Room>
            <Type>Room-2</Type>
            <NoOfAdults>1</NoOfAdults>
            <NoOfChilds>0</NoOfChilds>
        </Room>
        <Room>
            <Type>Room-3</Type>
            <NoOfAdults>2</NoOfAdults>
            <NoOfChilds>0</NoOfChilds>
        </Room>
        <Room>
            <Type>Room-4</Type>
            <NoOfAdults>3</NoOfAdults>
            <NoOfChilds>0</NoOfChilds>
        </Room>
    </Rooms>
</Booking>

Ответ приходит как

<HotelFindResponse>
<error>Please provide agentcode.</error>
<error>Please provide username.</error>
<error>Please provide password.</error></HotelFindResponse>

Но я передаю ту же конфигурацию в POSTMAN , дайте мне правильный ответ.

enter image description here

Я поставил такую ​​же конфигурацию в Почтальон. Я пытался так много способов получить ответ. Все не удалось. Что не так с этим кодом? Пожалуйста, помогите.

Ответы [ 3 ]

1 голос
/ 17 апреля 2019

Можете ли вы попробовать с конечной точкой HTTP (https://docs.wso2.com/display/EI640/HTTP+Endpoint), используя post?

Фабрика полезной нагрузки уже устанавливает тело, поэтому оно должно работать сразу же, как и после публикации.

0 голосов
/ 25 апреля 2019

Можете ли вы попробовать это? отсюда

<payloadFactory media-type="xml">
            <format>
               <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
                  <soapenv:Body>
                     <root xmlns="">
                        <XML>$1</XML>
                     </root>
                  </soapenv:Body>
               </soapenv:Envelope>
            </format>
            <args>
               <arg evaluator="xml" expression="$ctx:xmlbody"></arg>              
            </args>
         </payloadFactory>             
         <property name="messageType" value="application/x-www-form-urlencoded" scope="axis2" type="STRING"></property>
         <property name="DISABLE_CHUNKING" value="true" scope="axis2" type="STRING"></property>
         <call>
<http method="post" uri-template="test.xmlhub.com/testpanel.php/action/findhotel"/>
</call>
0 голосов
/ 24 апреля 2019

Попробуйте использовать имя свойства "uri.var.xmlBody" вместо простого "xmlBody":

<property expression="$env/*[local-name()='Body']/*" name="uri.var.xmlBody" scope="default" type="STRING"/>

<call>
        <endpoint>
            <address format="pox" uri="http://test.xmlhub.com/testpanel.php/action/findhotel?XML={uri.var.xmlBody}"/>
        </endpoint>
</call>
...