Mule网络服务代理

时间:2013-11-18 15:26:45

标签: mule

鉴于气候的免费/开放式网络服务:

http://eklima.no/wsKlima/standard/standard_en.html

其网站服务界面位于:

http://eklima.no/metdata/MetDataService

和WSDL at:

http://eklima.no/metdata/MetDataService?WSDL

我一直在尝试将其作为测试用例来尝试使用mule web-proxy模式配置。

我试过这个配置变体:

<pattern:web-service-proxy name="klimamet-ws-proxy" 
inboundAddress="http://localhost:8080/klimamet"
outboundAddress="http://eklima.no/metdata/MetDataService" />

现在如果我直接访问真正的网络seb服务,它会给我一个正确的回复:

http://eklima.no/metdata/MetDataService?invoke=getMetData&timeserietypeID=0&format=&from=2006-01-01&to=2006-01-05&stations=18700&elements=tam&hours=&months=&username=

然后,如果我访问代理只是为了获取wsdl,它可以工作:

http://localhost:8080/klimamet?wsdl

但如果我对代理做了真实的服务请求:

http://localhost:8080/klimamet?invoke=getMetData&timeserietypeID=0&format=&from=2006-01-01&to=2006-01-05&stations=18700&elements=tam&hours=&months=&username=

然后我得到文档页面(与http://eklima.no/metdata/MetDataService相同),而不是预期的soap xml-response。

通过查看日志,我没有看到任何错误的线索。

通过这种方式,我尝试了配置的其他变体,但它只是给了我其他类型的错误。

如果有人能帮助我发现问题,我将感激不尽。

1 个答案:

答案 0 :(得分:1)

Web Service代理使用标准SOAP请求,即HTTP POSTed SOAP信封。您在这里使用HTTP GET。请使用带有web-service-proxy的HTTP POST。

如果您真的想继续使用GET,请切换到pattern:http-proxy,这会将GET参数转发到出站端点。请注意,它不会重写WSDL,因此代理的客户端将无法依赖它。