WebService入门

·  阅读 238

WebService入门

webService就是可编程的URL,使用标准的Http及XML协议远程调用的应用程序组件。webservice包含三个要素,分别是:

  1. SOAP:简单对象访问协议
  2. UDDI:通用描述发现整合
  3. WSDL:webservice描述语言 下面分别介绍这三者。

SOAP

简单来说,HTTP+XML=SOAP。 SOAP 协议包括以下四个部分的内容:

  1. SOAP 封装(envelop),封装定义了一个描述消息中的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理它们的框架;
  2. SOAP 编码规则(encoding rules),它定义了不同应用程序间交换信息时,需要使用到的数据类型;
  3. SOAP RPC 表示(RPC representation),它定义了一个表示远程过程调用和应答的协定;
  4. SOAP 绑定(binding),它定义 SOAP 使用哪种底层协议交换信息的协定。使用 HTTP/TCP/UDP 协议都可以。

消息格式

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
    xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
    soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
    <soap:Header>
        <!-- 消息头,可选 -->
    </soap:Header>
    <soap:Body>
        <!-- 消息内容,必需 -->

        <soap:Fault>
            <!-- 错误信息,可选 -->
        </soap:Fault>
    </soap:Body>
</soap:Envelope>
复制代码

一条SOAP消息就是一个普通的XML文档,包含如下元素:

  1. 必需的 Envelope 元素,据此可把该 XML 文档标识为一条 SOAP 消息;
  2. 可选的 Header 元素,包含头部信息,一般用于身份验证;
  3. 必需的 Body 元素,包含所有的调用和响应信息;
  4. 可选的 Fault 元素,提供有关在处理此消息时,所发生的错误的描述信息;

UDDI

UDDI(统一描述、发现和集成)是一种目录服务,用户可以使用它对WebService进行注册和搜索。用来说明一个Web服务的一些信息类型,以便帮助服务的请求者确定如下问题: WHO,WHAT,WHERE,HOW . UDDI 定义如何查找 Web 服务(及其 WSDL 文件)。UDDI 并不像 WSDL 和 SOAP 一样深入人心,因为很多时候,使用者知道 Web 服务的位置(通常位于公司的企业内部网中)。 UUDI可以与搜索引擎进行类比,搜索引擎一般只返回web页面的URI,而UUID注册中心不仅返回服务的位置,还会返回有关服务的工作方式。

WSDL

下面重点介绍WSDL,认为是三个里面最复杂的。本质上wsdl一门基于XML的语言,用于描述webservice以及如何对他们进行访问的。

<definitions>
    <types>
       definition of types........
       数据类型定义的容器,它使用某种类型系统(一般地使用XML Schema中的类型系统)
    </types>
    <message>
        definition of a message....
	通信消息的数据结构的抽象类型化定义。使用Types所定义的类型来定义整个消息的数据结构。
    </message>
    <portType>
        definition of a port.......
	对于某个访问入口点类型所支持的操作的抽象集合,这些操作可以由一个或多个服务访问点来支持。
    </portType>
    <binding>
        definition of a binding....
	特定端口类型的具体协议和数据格式规范的绑定。
    </binding>
    <service>
        相关服务访问点的集合。
    </servie>
</definitions>
复制代码

通过wsdl定义就能知道如何访问接口了: 天气预报

image.png

返回结果:

image.png

PostMan测试

使用postman测试天气预报这一典型的webservice服务。

  1. 新建一个http请求,填写url地址http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl
  2. header中新增Content-Type类型为:text/xml;charset=utf-8注意字符集一定是utf-8,否则参数中传递中文会报查询结果为空。

image.png 3. 填写body内容,类型为raw,内容如下:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <getSupportCity xmlns="http://WebXml.com.cn/">
      <byProvinceName>浙江</byProvinceName>
    </getSupportCity>
  </soap:Body>
</soap:Envelope>
复制代码

结果如下:

image.png

分类:
后端
标签:
收藏成功!
已添加到「」, 点击更改