通过前台jquery调用本地WebService(一) SOAP体

弘烨烁
2023-12-01

连续查找动态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体的基本型



 类似资料: