.net webservice studio是一款使用人群最多,口碑最好,功能最强大的webservice测试工具,这款webservice测试工具为微软开发,为完全免费版,马上下载使用吧。
基本介绍
这款工具出自微软内部,最大的优点是可视化很好,不用去看那些xml文件,WebService的基础内容就有XML
从上图可以看到,操作上也很方便,只需要把Service部署到IIS后,在WSDL EndPoint中输入这个要测的Service的URL,点击Get按钮,就能把Service要输入的参数列表取出来,测试的时候只需要在输入参数的值,点击Invoke按钮,就可以得到结果,结果也是一样,一边为参数,一边为值,检查起来很方便。同时参数的类型也能显示出来。
使用实例
用.NET WebService Studio调试Web Service解决SOAPAction的问题
话说是这样的,这两天开发一个短信发送功能,客户给了一个 Web Service 地址(没有文档),让我调用就可以发送了,
我在VS 2013添加了服务引用,一切正常,可是执行代理方法时,怎么都报错
RPC Message receiveExtMTPushRequest1 in operation 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。
填好EndPoint -> 点击GET获取到方法和参数列表 -> 选中Input中每个参数输入相应的值 -> 点击Invoke执行,我靠,Output中居然成功了。
点击 Request/Response看看请求和响应的数据
这下好办了,把 Request 中的 SOAP 放到 Fiddler 中去POST一下,成功!
VS生成的代理类调用不成功,应该是少了一个HTTP HEADER参数 SOAPAction(不是SOAP HEADER),这个参数有一定意义,在WSDL中也可以找到,在跨平台调用时尤为常见,大家可以网上搜搜。
解决方案:
1. 自己组合一个SOAP XML,然后用 HttpClient或WebRequest 来调用 Web Service,然后解析返回的XML即可;
2. 在 .NET WebService Studio 中点击 WSDLs & Proxy,里面有代理类和客户端代码,复制到项目中使用。