鉴于气候的免费/开放式网络服务:
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服务,它会给我一个正确的回复:
然后,如果我访问代理只是为了获取wsdl,它可以工作:
http://localhost:8080/klimamet?wsdl
但如果我对代理做了真实的服务请求:
http://localhost:8080/klimamet?invoke=getMetData×erietypeID=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。
通过查看日志,我没有看到任何错误的线索。
通过这种方式,我尝试了配置的其他变体,但它只是给了我其他类型的错误。
如果有人能帮助我发现问题,我将感激不尽。
答案 0 :(得分:1)
Web Service代理使用标准SOAP请求,即HTTP POSTed SOAP信封。您在这里使用HTTP GET。请使用带有web-service-proxy
的HTTP POST。
如果您真的想继续使用GET,请切换到pattern:http-proxy
,这会将GET参数转发到出站端点。请注意,它不会重写WSDL,因此代理的客户端将无法依赖它。