Конечной точке SOAP вызова WSO2 ESB не удалось выполнить операцию - PullRequest
0 голосов
/ 16 апреля 2019

Я хочу вызвать URL-адрес конечной точки SOAP с помощью Action от WSO2 ESB. Я мог бы позвонить по SOAP URL и получить полный ответ wsdl, но не смог выполнить Действие.

Скажем, мой респондон wsdl

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions ....>
 <wsdl:types>
        <xs:schema  ..>...</xs:schema>
</wsdl:types>
<wsdl:service>..</wsdl:service>

 <wsdl:portType name="..">

<wsdl:operation name="AAA">
            <wsdl:input message="tns:in"/>
            <wsdl:output message="tns:out"/>
            <wsdl:fault name="fault1" message="tns:Error"/>
        </wsdl:operation>
<wsdl:operation name="BBB">
            <wsdl:input message="tns:in"/>
            <wsdl:output message="tns:out"/>
            <wsdl:fault name="fault1" message="tns:Error"/>
        </wsdl:operation>
<wsdl:operation name="CCC">
            <wsdl:input message="tns:in"/>
            <wsdl:output message="tns:out"/>
            <wsdl:fault name="fault1" message="tns:Error"/>
        </wsdl:operation>
......
......
</wsdl:portType>
...

Это мой код WSO2 ESB для вызова конечной точки SOAP

<payloadFactory media-type="xml">
        <format>
          <soapenv:Envelope
            xmlns:app="...xsd"
            xmlns:com=".....xsd"
            xmlns:ser="...xsd" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
            <soapenv:Header/>
            <soapenv:Body>
              <ser:...Request>
                <app:ApplicationHeader>
                  <app:...>$1</app:...>
                  <app:...>$2</app:...>

                </app:ApplicationHeader>
                <ser:DataHeader>
                  <ser:....>$3</ser:...
                  <ser:...>$4</ser:...>

                </ser:DataHeader>
              </ser:...Request>
            </soapenv:Body>
          </soapenv:Envelope>
        </format>
        <args>
          <arg value="1"/>
          <arg value="2"/>
          <arg value="3"/>
          <arg value="4"/>

        </args>
      </payloadFactory>
      <header name="Action" scope="default" value="AAA"/>

      <call blocking="true">
        <endpoint>
          <address uri="http:/URL/>
        </endpoint>
      </call>
      <respond/>

Когда я вызываю этот код, я получаю больше всего ответа WSDL вместо операции "AAA"

Но я должен получить эту операцию

1 Ответ

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

Похоже, вы указали wsdl url в качестве адреса конечной точки.Вот почему вы получаете файл wsdl и ошибку, что вместо конверта Soap он получает определения.

Вы должны использовать конечную точку wsdl.

    <endpoint xmlns="http://ws.apache.org/ns/synapse" name="Service">
   <wsdl uri="https://yourServer/yourService?wsdl" service="yourService" port="yourServiceSoap">
      <suspendOnFailure>
         <progressionFactor>1.0</progressionFactor>
      </suspendOnFailure>
      <markForSuspension>
         <retriesBeforeSuspension>0</retriesBeforeSuspension>
         <retryDelay>0</retryDelay>
      </markForSuspension>
   </wsdl>
</endpoint>

Или вы можете использовать конечную точку адреса, но взять URIиз файла wsdl в разделе wsdl: port, для этого примера, взять https://yourServer/service/yourService.asmx в качестве URI:

<service name="yourService">
<port name="yourServiceSoap" binding="yourServiceSoapBinding">    
<soapbind:address location="https://yourServer/service/yourService.asmx"/>
</port>
</service>
...