用.NETWebServiceStudio调试WebService解决SOAPAction的问题

王朝学院·作者佚名  2016-08-28
窄屏简体版  字體: 小  |  中  |  大  |  超大  

话说是这样的,这两天开发一个短信发送功能,客户给了一个 Web Service 地址(没有文档),让我调用就可以发送了,

我在VS 2013添加了服务引用,一切正常,可是执行代理方法时,怎么都报错

RPC Message receiveExtMTPushRequest1 inOperation receiveExtMTPush1 has an invalid body name receiveExtMTPush. It must be receiveExtMTPush1难道我的方法名错了吗?可是VS自动生成的不可能错,参数也不可能错(客户核对过)。

我用浏览器打开这个 web service,描述是一个 AXIS web service,难道 .NET 调用 AXIS web service 就不行?看了下 WSDL 也是标准的啊。

于是我尝试网上说的动态调用方式,折腾来去反射时就报错,算了看看其它方法吧。

我想找一个 web service 调试工具吧,如果再不成功就告诉客户 web service 是不是有问题?我就找到了 .NET WebService Studio,很轻量的一个工具,几十K。

[flash=500,400]http://s1.knowsky.com/20160211/5pw1yacqdry47.png[/flash]

填好EndPoint -> 点击GET获取到方法和参数列表 -> 选中Input中每个参数输入相应的值 -> 点击Invoke执行,我靠,Output中居然成功了。

点击 Request/Response看看请求和响应的数据

[flash=500,400]http://s1.knowsky.com/20160211/yxwheqkj35w48.png[/flash]

这下好办了,把 Request 中的 SOAP 放到 Fiddler 中去POST一下,成功!

[flash=500,400]http://s1.knowsky.com/20160211/qnq04dbfgl448.png[/flash]

VS生成的代理类调用不成功,应该是少了一个HTTP HEADER参数 SOAPAction(不是SOAP HEADER),这个参数有一定意义,在WSDL中也可以找到,在跨平台调用时尤为常见,大家可以网上搜搜。

解决方案:

1. 自己组合一个SOAPxml,然后用 HttpClient或WebRequest 来调用 Web Service,然后解析返回的XML即可;

2. 在 .NET WebService Studio 中点击 WSDLs &PRoxy,里面有代理类和客户端代码,复制到项目中使用。

[flash=500,400]http://s1.knowsky.com/20160211/j033w3knx5u48.png[/flash]

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航