WS02:从ESB调用外部天气SOAP Web服务

时间:2014-06-20 09:48:39

标签: web-services soap wsdl wso2 wso2esb

我正在尝试使用WSO2 ESB(版本4.8.1)来调用外部托管的SOAP Web服务。为了尝试一下,我使用公共Web服务来获取天气信息(http://wsf.cdyne.com/WeatherWS/Weather.asmx?WSDL),更具体地说是GetWeatherInformation操作。

我使用soapUI工具成功使用了Web服务。

我是SOAP和ESB的新手,因此我尝试关注一些博客条目,但我一直在收到错误。我尝试使用代理服务,有效负载工厂和发送但仍然没有管理。有人可以帮我设置一下吗?

由于

2 个答案:

答案 0 :(得分:1)

这里有一个示例API来调用GetWeatherInformation:

<?xml version="1.0" encoding="UTF-8"?>
<api xmlns="http://ws.apache.org/ns/synapse"
     name="testws3api"
     context="/testws3api">
   <resource methods="GET" url-mapping="/GetWeatherInformation">
      <inSequence>
         <payloadFactory media-type="xml">
            <format>
               <GetWeatherInformation xmlns="http://ws.cdyne.com/WeatherWS/"/>
            </format>
            <args/>
         </payloadFactory>
         <send>
            <endpoint>
               <address uri="http://wsf.cdyne.com/WeatherWS/Weather.asmx" format="soap11"/>
            </endpoint>
         </send>
      </inSequence>
      <outSequence>
         <send/>
      </outSequence>
   </resource>
</api>

您只需向http://esb.hostname:8280/testws3api/GetWeatherInformation发送GET http请求(使用SoapUI或在您的互联网浏览器中输入此地址),您将从Weather WS中获取XML响应

答案 1 :(得分:0)

它适用于部署在WSO2 ESB v4.8.1中的代理配置:

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="testws3"
       transports="https http"
       startOnLoad="true"
       trace="disable">
   <target>
      <endpoint>
         <wsdl service="Weather"
               port="WeatherSoap12"
               uri="http://wsf.cdyne.com/WeatherWS/Weather.asmx?WSDL"/>
      </endpoint>
      <outSequence>
         <send/>
      </outSequence>
   </target>
   <publishWSDL uri="http://wsf.cdyne.com/WeatherWS/Weather.asmx?WSDL"/>
</proxy>