.NET如何处理soap接口
1、 webservice大家都用的比较频繁,有时也有一些带soapheader的webservice,首先一种最简单的调用soapheader的情况就是,如果对方的webservice也是用.net写的,可能会是这种方式。
2、 之后我们在通过添加服务引用或者是利用vs的wsdl工具生成代理类,都会把上面的AuthHeader类型给生成好,我们要做的就是简单的赋值工作了。
通过下图这种方式就可以通过验证调用webservice获取返回信息了。
3、 有些时候我们发现我们调用对方的webservice一直失败,然后添加娃爹的销趴服务引用或者是代理类中也没有soapheader的类型,然后客户告诉我们,你要调用摸返著接口必须传soapHeader,这个soapHeader在.net中是这样的。
4、 我们把这个AuthHeader按照格式写好。然后在调用webservice中的方法之前加上我们的soapheader,代码如下:
1、最后一种情况就是人家只告诉你需要加一个这样的
<AuthHeader>
<username>用户名</username>
<password>密码</password>
</AuthHeader>
2、这个时候就需要使用我们的SoapUI了,我们来用soapui看看我们报文吧
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tem="http://tempuri.org/">
<soap:Header/>
<soap:Body>
<tem:HelloWorld/>
</soap:Body>
</soap:Envelope>
3、发现怎么<soap:Header/>中是空的呢,然后我们按照别人给的格式将soapheader中填上
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tem="http://tempuri.org/">
<soap:Header>
<AuthHeader>
<username>admin</username>
<password>123</password>
</AuthHeader>
</soap:Header>
<soap:Body>
<tem:HelloWorld/>
</soap:Body>
</soap:Envelope>
4、 然后这样发送过去,发现webservice成功访问并且接收到返回值了,哎,任务时间比较紧迫,只能用最简单也是最笨的方法了,替换数据然后在把报文发过去。
5、最终返回的xml中的内容也只能是自己解析了。。。
可能遇到后面两种情况的会少一些,希望大家有其他的方式可以分享一下。