2016-11-19 4 views
0

Я пытаюсь открыть SOAP-сервер как REST API с помощью wso2 ESB. Я использую фабрику полезных данных для отправки сообщения тела мыла, но это не работает.Сообщения SOAP не отправляются с использованием wso2 ESB REST API

Это мой API ресурс в WSO2 код ESB:

<?xml version="1.0" encoding="UTF-8"?> 
<api context="/akademik" name="SampleAPI" xmlns="http://ws.apache.org/ns/synapse"> 
<resource methods="GET" uri-template="/students?symbol={symbol}"> 
    <inSequence> 
     <log level="custom"> 
      <property expression="$url:symbol" name="symbol"/> 
     </log> 
     <payloadFactory media-type="xml"> 
      <format> 
       <soapenv:Envelope xmlns:sem="http://semogabisa.te.net/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
        <soapenv:Header/> 
        <soapenv:Body> 
         <sem:sayHi> 
          <arg0>$1</arg0> 
         </sem:sayHi> 
        </soapenv:Body> 
       </soapenv:Envelope> 
      </format> 
      <args> 
       <arg evaluator="xml" expression="$url:symbol"/> 
      </args> 
     </payloadFactory> 
     <header scope="default"> 
      <m:complexHeader xmlns:m="http://org.synapse.example"> 
       <m:property key="Content-Type" value="application/xml"/> 
      </m:complexHeader> 
     </header> 
     <send> 
      <endpoint> 
       <address format="soap11" uri="http://localhost:8084/HelloWorld"/> 
      </endpoint> 
     </send> 
    </inSequence> 
    <outSequence> 
     <send/> 
    </outSequence> 
    <faultSequence/> 
</resource> 

сообщения Soap не отправляется на веб-службу бэкэнда, это говорит нуль.

Я проверить службу бэкэнда с SoapUI с таким же форматом мыла конверт и он работает

enter image description here

ответ

0

Я думаю, что вы сделаете какую-то ошибку на посредника заголовка. Для службы back-end «HelloWorld» не нужен заголовок SOAP на основе вашего запроса интерфейса SOAP. поэтому удалите медиатор заголовка.

Выберите Synapse, если вы хотите управлять заголовками SOAP. Выберите «Транспорт», если вы хотите манипулировать заголовками HTTP.

И кажется, что конец конца SOAP11, тип SOAP11 - «текст/xml». Возможно, вам понадобится установить это свойство.

<property name="messageType" value="text/xml" scope="axis2"/> 

При отправке сообщения из ESB, вам нужно установить свойство «MessageType», то ESB будет FORMATTER сообщения, которые соответствуют заднему концу требуются.

Возможно, вам, возможно, понадобится это свойство, если вы обнаружили, что ESB добавляет некоторый контекст в ваш URI вашего конца, когда вы отправляете сообщение на задний конец.

<property name="REST_URL_POSTFIX" scope="axis2" action="remove"/> 

Хорошие советы:
Пожалуйста, откройте «synapse.transport.http.wire», как DEBUG, это будет выводить каждое сообщение и из ESB. Этот журнал будет включать HTTP-заголовок и тело. После того, как вы получите проводной журнал, вы можете сравнить проводной журнал с запросом SOAPUI, а затем выяснить, какая часть является неправильной.
https://docs.wso2.com/display/ESB481/Setting+Up+Logging

+0

где именно эти два объекта недвижимости? –

+0

@LyanDwiPangestu перед отправкой в ​​«inSequence» – James

+0

Я отредактировал его, как вы сказали, и включите synapse.transport.http.wire как DEBUG и обнаружил, что wso2 добавил некоторое пространство имен xml в параметр 'arg0'. он становится таким, как это ' Foobar ' –

Смежные вопросы