连续查找动态WebService的资料 方法 依然困难重重 不知道这个算不算希望
WebService 是基于HTTP协议的一种传输方式 本质是传递XML
但是这个XML又不是普通的XML 他是一个要符合SOAP体的XML
这个SOAP体又要符合SOAP协议才行
举个例子 你写信邮出去 邮局需要你的信封上有收信人 收信人地址 寄信人地址 以及邮票 这样就符合了邮局的协议 邮局就会给你邮寄信件
而信件的内容中有某种你与收信人自己定义的格式 这样收信人才能看懂你的信
综上所述 这个信封部分就好比是HTTP协议 而这个信的格式就相当于SOAP协议
所以 SOAP协议是基于HTTP协议的
首先分析一下WebService
我们需要知道调用WebService需要知道这个WebService的地址(url)、需要调用什么方法、方法中需要什么参数、方法返回值以及这个WebService的命名空间(Namespace)
这些都可以从WebService的WSDL文件中分析出来 但是通常都是直接用WebServiceClient自动解析
刚才说过WebService的本质是传递XML 但是作为调用的我们 只需要传递参数值 知道调用什么方法等等 就可以调用 并不需要写什么XML 而这个XML又是符合SOAP协议的SOAP体 这个SOAP体的基本格式是这样的
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<methodName xmlns="Namespace">
<data>value</data>
</methodName>
</soap:Body>
</soap:Envelope>
第一行就不解释了
第二行是声明这是一个SOAP体 具体做什么用的 老实说我也不太清楚 不过所有的WebService都必须要这么写
主要说一下第三行以下的部分 也就是<soap:Body>标签里面的部分
<methodName xmlns="Namespace">
methodName 是方法名
Namespace是命名空间
data需要传递的参数名
value需要传递的参数值
这四个除了命名空间 剩下的三个也是咱们即使用WebServiceClient调用 也需要知道的东西 很必要 当然了 如果方法不需要传参data与value也可以省略
这个就是传递的SOAP体的基本型