gpt4 book ai didi

XMLWeb服务技术解析:WSDL与SOAP原理、应用案例一览

转载 作者:撒哈拉 更新时间:2024-05-31 23:07:17 59 4
gpt4 key购买 nike

XML Web服务是一种用于在网络上发布、发现和使用应用程序组件的技术。它基于一系列标准和协议,如WSDL、SOAP、RDF和RSS。下面是一些相关的内容:

  • WSDL(Web服务描述语言):用于描述Web服务的基于XML的语言,定义了服务的接口、操作和消息格式 。

  • SOAP(简单对象访问协议):是一种基于XML的协议,用于在网络上交换结构化信息。它定义了消息的格式和传输规则,并被广泛用于Web服务之间的通信.

  • RDF(资源描述框架):是一种描述网络资源的框架,使用XML表示。它提供了一种统一的方式来描述资源的属性和关系,是万维网上语义网的基础之一.

  • RSS(真正简单的信息聚合):是一种用于发布网站内容的XML格式。它允许用户订阅网站的更新,并可以自动获取最新的内容。RSS文件通常用于博客、新闻网站等.

XML Web服务的特点包括:

  • 自包含和自描述:Web服务能够描述自己的接口和功能,使其易于使用和集成到其他应用程序中.

  • 基于开放协议:Web服务使用开放的协议和标准,如HTTP和SOAP,以确保不同平台和系统之间的互操作性.

  • 可重用的组件:Web服务提供了可重用的应用程序组件,如货币转换、天气预报等,可以被其他应用程序调用和集成.

  • 连接现有软件:Web服务可以连接现有的软件系统,并提供一种统一的方式来交换数据和调用功能.

在实际应用中,您可以通过创建和部署Web服务来实现各种功能和服务,从简单的数据转换到复杂的业务逻辑.

XML WSDL

WSDL 是 Web Services Description Language 的缩写 WSDL 用于描述 Web 服务 WSDL 以 XML 形式编写 WSDL 文档 WSDL 文档描述了一个 Web 服务。它指定了服务的位置以及服务的方法,使用以下主要元素:

元素 描述 定义 Web 服务 使用的 ( XML Schema) 数据类型 为每个操作定义数据元素 描述可执行操作和所涉及的消息。 为每个端口类型定义协议和数据格式 。

WSDL 文档的主要结构如下:

`<definitions>`

`<types>`
  数据类型定义........
`</types>`

`<message>`
  传输的数据定义....
`</message>`

`<portType>`
  一组操作......
`</portType>`

`<binding>`
  协议和数据格式规范....
`</binding>`

`</definitions>`

WSDL 示例 。

`<message name="getTermRequest">`
  `<part name="term" type="xs:string"/>`
`</message>`

`<message name="getTermResponse">`
  `<part name="value" type="xs:string"/>`
`</message>`

`<portType name="glossaryTerms">`
  `<operation name="getTerm">`
    `<input message="getTermRequest"/>`
    `<output message="getTermResponse"/>`
  `</operation>`
`</portType>`

在此示例中,<portType> 元素将 "glossaryTerms" 定义为端口的名称,"getTerm" 定义为操作的名称.

"getTerm" 操作具有名为 "getTermRequest" 的输入消息和名为 "getTermResponse" 的输出消息.

<message> 元素定义了每个消息的部分和关联的数据类型.

<portType> 元素 <portType> 元素定义了一个 Web 服务,可以执行的操作以及所涉及的消息.

请求-响应类型是最常见的操作类型,但 WSDL 定义了四种类型:

类型 定义 One-way 该操作可以接收消息,但不会返回响应 Request-response 该操作可以接收请求,并将返回响应 Solicit-response 该操作可以发送请求,并将等待响应 Notification 该操作可以发送消息,但不会等待响应 WSDL 单向操作 单向操作示例:

`<message name="newTermValues">`
  `<part name="term" type="xs:string"/>`
  `<part name="value" type="xs:string"/>`
`</message>`

`<portType name="glossaryTerms">`
  `<operation name="setTerm">`
    `<input name="newTerm" message="newTermValues"/>`
  `</operation>`
`</portType >`

在上面的示例中,portType "glossaryTerms" 定义了一个名为 "setTerm" 的单向操作.

"setTerm" 操作允许使用 "newTermValues" 消息输入新术语消息,其中包括输入参数 "term" 和 "value"。但是,没有为操作定义输出.

WSDL 请求-响应操作 请求-响应操作示例:

`<message name="getTermRequest">`
  `<part name="term" type="xs:string"/>`
`</message>`

`<message name="getTermResponse">`
  `<part name="value" type="xs:string"/>`
`</message>`

`<portType name="glossaryTerms">`
  `<operation name="getTerm">`
    `<input message="getTermRequest"/>`
    `<output message="getTermResponse"/>`
  `</operation>`
`</portType>`

在上面的示例中,portType "glossaryTerms" 定义了一个请求-响应操作,名为 "getTerm".

"getTerm" 操作需要名为 "getTermRequest" 的输入消息,其中包含名为 "term" 的参数,并将返回一个名为 "getTermResponse" 的输出消息,其中包含名为 "value" 的参数.

WSDL 绑定到 SOAP

WSDL 绑定定义了 Web 服务 的消息格式和协议细节.

请求-响应操作示例:

`<message name="getTermRequest">`
  `<part name="term" type="xs:string"/>`
`</message>`

`<message name="getTermResponse">`
  `<part name="value" type="xs:string"/>`
`</message>`

`<portType name="glossaryTerms">`
  `<operation name="getTerm">`
    `<input message="getTermRequest"/>`
    `<output message="getTermResponse"/>`
  `</operation>`
`</portType>`

`<binding type="glossaryTerms" name="b1">`
   `<soap:binding style="document"`
   `transport="http://schemas.xmlsoap.org/soap/http" />`
   `<operation>`
     `<soap:operation soapAction="http://example.com/getTerm"/>`
     `<input><soap:body use="literal"/></input>`
     `<output><soap:body use="literal"/></output>`
  `</operation>`
`</binding>`

binding 元素具有两个属性 - name 和 type.

name 属性(您可以使用任何名称)定义绑定的名称,type 属性指向绑定的端口,在本例中为 "glossaryTerms" 端口.

soap:binding 元素具有两个属性 - style 和 transport.

style 属性可以是 "rpc" 或 "document"。在这种情况下,我们使用 document。transport 属性定义要使用的 SOAP 协议。在这种情况下,我们使用 HTTP.

operation 元素定义了 portType 公开的每个操作.

对于每个操作,必须定义相应的 SOAP 动作。您还必须指定如何编码输入和输出。在本例中,我们使用 "literal".

XML SOAP

SOAP 是 Simple Object Access Protocol 的缩写 SOAP 是一种应用通信协议 SOAP 是用于发送和接收消息的格式 SOAP 是平台无关的 SOAP 基于 XML 为什么使用 SOAP? Web 应用程序 能够在 互联网 上进行通信是非常重要的.

在 应用程序 之间进行通信的最佳方式是通过 HTTP,因为 HTTP 受到所有 互联网 浏览器和服务器的支持。SOAP 就是为了实现这一点而创建的.

SOAP 提供了一种在运行在不同操作系统、使用不同技术和编程语言的 应用程序 之间进行通信的方式.

SOAP 构建块 SOAP 消息是一个普通的 XML 文档,包含以下元素:

一个 Envelope 元素,用于标识 XML 文档作为 SOAP 消息 一个包含头信息的 Header 元素 一个包含调用和响应信息的 Body 元素 一个包含错误和状态信息的 Fault 元素 以上所有元素都声明在 SOAP 信封的默认命名空间中 。

语法规则 以下是一些重要的语法规则:

SOAP 消息必须使用 XML 进行编码 SOAP 消息必须使用 SOAP Envelope 命名空间 SOAP 消息不能包含 DTD 引用 SOAP 消息不能包含 XML 处理指令 。

该命名空间将 Envelope 定义为 SOAP Envelope.

如果使用了不同的命名空间,应用程序 将生成错误并丢弃消息.

encodingStyle 属性 encodingStyle 属性用于定义文档中使用的数据类型。该属性可以出现在任何 SOAP 元素上,并应用于该元素及其所有子元素.

SOAP 消息没有默认编码.

SOAP Header 元素 可选的 SOAP Header 元素包含关于 SOAP 消息的应用程序特定信息(如身份验证、支付等).

如果存在 Header 元素,则必须将其放在 Envelope 元素的第一个子元素位置.

注意:Header 元素的所有直接子元素必须是命名空间限定的.

SOAP 在默认命名空间中定义了三个属性。这些属性是:mustUnderstand、actor 和 encodingStyle.

SOAP Header 中定义的属性定义了接收者应该如何处理 SOAP 消息.

mustUnderstand 属性 SOAP mustUnderstand 属性可用于指示接收者是否必须处理头部条目.

如果将 mustUnderstand="1" 添加到 Header 元素的子元素中,表示处理 Header 的接收者必须识别该元素。如果接收者不识别该元素,则在处理 Header 时将失败.

语法 soap:mustUnderstand="0|1" 。

actor 属性 SOAP 消息可能通过沿着消息路径传递不同的端点从发送方传递到 。

接收方。然而,SOAP 消息的不是所有部分都可能是针对最终端点的,而是可能针对消息路径上的一个或多个端点.

SOAP actor 属性用于将 Header 元素定向到特定端点.

语法 soap:actor="URI" 。

encodingStyle 属性 encodingStyle 属性用于定义文档中使用的数据类型。该属性可以出现在任何 SOAP 元素上,它将应用于该元素的内容及其所有子元素.

SOAP 消息没有默认编码.

语法 soap:encodingStyle="URI" 。

SOAP Body 元素 必需的 SOAP Body 元素包含了消息的实际 SOAP 消息,用于消息的最终端点.

SOAP Body 元素的直接子元素可以是命名空间限定的.

示例 。

<soap:Envelope 。

</m:GetPrice> </soap:Body> 。

</soap:Envelope> 上面的示例请求了苹果的价格。请注意,上面的 m:GetPrice 和 Item 元素是应用程序特定的元素。它们不属于 SOAP 命名空间 。

SOAP Fault 元素 可选的 SOAP Fault 元素用于指示错误消息.

SOAP Fault 元素包含了 SOAP 消息的错误和状态信息.

如果存在 Fault 元素,它必须作为 Body 元素的子元素出现。Fault 元素只能在 SOAP 消息中出现一次.

SOAP Fault 元素具有以下子元素:

子元素 描述 <faultcode> 用于标识错误的代码 <faultstring> 错误的人类可读的解释 <faultactor> 导致错误发生的信息 <detail> 包含与 Body 元素相关的应用程序特定错误信息 。

SOAP 错误代码 当描述错误时,faultcode 元素中必须使用以下定义的 faultcode 值:

错误 描述 VersionMismatch 在 SOAP Envelope 元素的命名空间中找到无效的命名空间 MustUnderstand Header 元素的立即子元素,mustUnderstand 属性设置为 "1",未被理解 Client 消息格式不正确或包含不正确的信息 Server 服务器出现问题,因此消息无法继续进行 。

HTTP 协议 HTTP 通过 TCP/IP 进行通信。HTTP 客户端使用 TCP 连接到 HTTP 服务器。建立连接后,客户端可以向服务器发送 HTTP 请求消息:

POST /item HTTP/1.1
Host: 189.123.255.239
Content-Type: text/plain
Content-Length: 200

然后,服务器处理请求并将 HTTP 响应发送回客户端。响应包含指示请求状态的状态代码:

200 OK
Content-Type: text/plain
Content-Length: 200

在上面的示例中,服务器返回了状态代码 200。这是 HTTP 的标准成功代码.

如果服务器无法解码请求,则可能返回以下内容:

400 Bad Request
Content-Length: 0

SOAP 绑定

SOAP 规范定义了 SOAP 消息的结构,但未定义它们如何交换。这一空白由所谓的 "SOAP 绑定" 填补。SOAP 绑定是允许使用传输协议有效地交换 SOAP 消息的机制.

大多数 SOAP 实现提供了常见传输协议的绑定,例如 HTTP 或 SMTP.

HTTP 是同步的并且被广泛使用。SOAP HTTP 请求至少指定了两个 HTTP 头部:Content-Type 和 Content-Length.

SMTP 是异步的,通常在最后一种情况或特殊情况下使用.

Java 的 SOAP 实现通常为 JMS(Java 消息系统)协议提供了特定的绑定.

Content-Type 。

SOAP 请求和响应的 Content-Type 头部定义了消息的 MIME 类型以及用于请求或响应的 XML 主体的字符编码(可选).

Content-Type: MIMEType; charset=character-encoding

示例 。

POST /item HTTP/1.1
Content-Type: application/soap+xml; charset=utf-8

Content-Length 。

SOAP 请求和响应的 Content-Length 头部指定了请求或响应的主体中的字节数.

Content-Length: bytes

示例 。

POST /item HTTP/1.1
Content-Type: application/soap+xml; charset=utf-8
Content-Length: 250

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送 。

看完如果觉得有帮助,欢迎点赞、收藏、关注 。

最后此篇关于XMLWeb服务技术解析:WSDL与SOAP原理、应用案例一览的文章就讲到这里了,如果你想了解更多关于XMLWeb服务技术解析:WSDL与SOAP原理、应用案例一览的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

59 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com