• 用.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,里面有代理类和客户端代码,复制到项目中使用。

  • 相关阅读:
    实验6 多态性
    js实现图片轮播
    xcode 4.6 使用NSURLConnection 获取网页内容(iOS6.1,纯手工编码,无xib,无storyboard)
    蓝牙API
    php使用microtime(true)查看代码执行时间
    clover无缘无故隐藏书签栏原因
    RedisGEO
    mysql 新特性之geometry
    mysql中geometry类型的简单使用
    微软Windows Phone 7新特性详解 狼人:
  • 原文地址:https://www.cnblogs.com/felixnet/p/5138371.html
Copyright © 2020-2023  润新知