接口测试-API测试中常用的协议(中)
一、SOAP
SOAP(Simple Object Access Protocol)即简单对象访问协议,是一种基于 XML 的用于在网络中交换结构化信息的协议,常用于 Web 服务之间的通信。以下为你详细介绍:
产生背景
在互联网发展过程中,需要一种标准化的方式让不同的应用程序和系统之间能够进行通信和数据交换。尤其是在分布式系统中,不同的平台、编程语言和技术栈开发的软件需要实现互操作性,SOAP 协议应运而生,它提供了一种跨平台、跨语言的通信解决方案。
基本结构
SOAP 消息本质上是一个 XML 文档,主要由以下几个部分组成:
- 信封(Envelope):是 SOAP 消息的根元素,标识整个消息的开始和结束,所有其他的 SOAP 元素都包含在信封中。例如:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><!-- 消息的其他部分 -->
</soap:Envelope>
- 头部(Header):是可选部分,包含与消息相关的一些元数据和附加信息,如身份验证信息、事务处理信息等。头部可以包含一个或多个头部条目,每个条目可以有不同的命名空间和用途。示例如下:
<soap:Header><m:AuthHeader xmlns:m="http://example.com/auth"><m:Username>admin</m:Username><m:Password>password123</m:Password></m:AuthHeader>
</soap:Header>
- 主体(Body):是必需部分,包含了实际要传输的业务数据和请求 / 响应信息。例如,一个简单的请求消息主体可能包含要调用的方法名和参数:
<soap:Body><m:GetUserInfo xmlns:m="http://example.com/user"><m:UserID>123</m:UserID></m:GetUserInfo>
</soap:Body>
- 错误信息(Fault):可选部分,当消息处理过程中出现错误时,会在主体中包含一个
<Fault>
元素,用于描述错误的详细信息,如错误代码、错误描述等。
工作原理
- 请求发送:客户端根据需要调用的服务和操作,构建一个符合 SOAP 协议规范的 XML 消息,并通过 HTTP、SMTP 等传输协议将消息发送到服务器端。
- 消息处理:服务器端接收到 SOAP 消息后,解析消息的头部和主体,根据消息中的操作信息调用相应的服务和方法进行处理。
- 响应返回:服务器处理完请求后,构建一个包含处理结果的 SOAP 响应消息,并通过相同的传输协议返回给客户端。客户端接收到响应消息后,解析消息获取处理结果。
特点
- 跨平台和跨语言:由于 SOAP 消息使用 XML 格式,XML 是一种通用的数据表示格式,因此 SOAP 可以在不同的操作系统、编程语言和技术平台之间进行通信,实现不同系统的集成。
- 规范性强:SOAP 协议有严格的规范和标准,对消息的结构、编码规则、错误处理等都有明确的定义,这使得不同的实现之间具有较好的互操作性。
- 支持多种传输协议:SOAP 可以通过多种传输协议进行传输,如 HTTP、SMTP、TCP 等,用户可以根据具体的应用场景选择合适的传输协议。
- 安全性高:SOAP 可以通过在消息头部添加安全信息(如身份验证、加密等)来增强通信的安全性,适用于对安全性要求较高的企业级应用。
应用场景
- 企业应用集成(EAI):在企业内部,不同的业务系统可能使用不同的技术和平台开发,SOAP 可以作为一种中间件,实现这些系统之间的数据交换和业务流程的协同。
- Web 服务:许多 Web 服务提供商使用 SOAP 协议来公开他们的服务接口,客户端可以通过发送 SOAP 请求来调用这些服务,获取所需的数据和功能。
- 金融和电子商务领域:由于对数据安全性和准确性要求较高,这些领域常使用 SOAP 协议进行交易处理、数据传输和业务交互。
二、SOAP vs RESTful
SOAP(Simple Object Access Protocol)协议和 RESTful(Representational State Transfer)架构是两种不同的用于实现网络服务通信的方式,它们在多个方面存在显著区别,以下为你详细阐述:
协议规范与架构风格
- SOAP:是一种基于 XML 的严格协议,有详细的标准规范,对消息的格式、通信流程、错误处理等都有明确的定义。它规定了消息必须采用特定的 XML 结构,包括信封(Envelope)、头部(Header)和主体(Body)等部分。不同的 SOAP 实现需要遵循统一的标准,以确保互操作性。
- RESTful:是一种架构风格,而非严格意义上的协议。它没有像 SOAP 那样详细的协议规范,而是基于 HTTP 协议的既有功能和原则,通过统一的接口(如使用标准的 HTTP 方法)来操作资源。RESTful 强调系统的可扩展性、简洁性和性能,更注重资源的概念和对资源的操作。
数据格式
- SOAP:主要使用 XML 作为数据交换格式。XML 具有良好的结构化和自描述性,能够清晰地表达复杂的数据结构和语义,但 XML 格式的消息通常比较冗长,包含大量的标签信息,会增加数据传输的开销,降低传输效率。
- RESTful:支持多种数据格式,常见的有 JSON 和 XML,其中 JSON 更为常用。JSON 格式简洁、轻量级,易于解析和生成,在数据传输过程中占用的带宽较少,能够提高系统的性能和响应速度。而且 JSON 更符合现代 Web 开发的趋势,在前端和后端之间的数据交互中广泛应用。
通信方式
- SOAP:可以使用多种传输协议,如 HTTP、SMTP、TCP 等,不局限于 HTTP 协议。这使得 SOAP 在一些特定的应用场景中具有更大的灵活性,例如在需要通过邮件进行消息传递的场景中,可以使用 SMTP 协议。但这种灵活性也增加了系统的复杂性,需要处理不同传输协议的兼容性和安全性问题。
- RESTful:主要基于 HTTP 协议进行通信,充分利用 HTTP 协议的既有功能,如使用标准的 HTTP 方法(GET、POST、PUT、DELETE 等)来对资源进行操作。这种方式使得 RESTful 服务与现有的 Web 基础设施和工具更好地集成,并且 HTTP 协议本身具有良好的跨平台和跨网络的特性,简化了系统的实现和部署。
接口设计
- SOAP:接口设计通常基于操作,强调对方法的调用。客户端需要知道服务端提供的具体操作和方法名,通过发送包含操作信息的 SOAP 消息来调用相应的服务。这种设计方式更适合传统的面向对象编程模型,注重方法的参数和返回值。
- RESTful:接口设计基于资源,将系统中的各种实体和信息抽象为资源,通过 URL 来定位资源,并使用标准的 HTTP 方法对资源进行操作。客户端只需要关注资源的 URL 和操作类型,而不需要关心具体的实现细节,使得接口更加简洁、直观,易于理解和使用。
性能与可扩展性
- SOAP:由于 XML 消息的冗长和复杂的协议规范,SOAP 在数据传输和处理过程中会消耗更多的资源和时间,性能相对较低。而且,SOAP 的严格规范使得在进行系统扩展和升级时,需要遵循一定的规则和标准,可能会增加开发和维护的成本。
- RESTful:JSON 格式的轻量级和基于 HTTP 协议的简单设计,使得 RESTful 服务在性能上具有优势,能够快速地处理和响应请求。同时,RESTful 的架构风格具有良好的可扩展性,通过对资源的抽象和分层设计,可以方便地添加新的资源和操作,适应系统的不断变化和发展。
安全性
- SOAP:提供了较为完善的安全机制,如 WS - Security 规范,支持消息的加密、签名、身份验证等功能,可以满足企业级应用对安全性的高要求。但这些安全机制的实现相对复杂,需要额外的配置和开发工作。
- RESTful:安全性主要依赖于 HTTP 协议提供的安全机制,如 HTTPS 进行数据加密传输,以及基于 Token 的身份验证等。虽然这些机制在一定程度上可以保证系统的安全,但相对 SOAP 的安全机制来说,功能可能不够全面,需要根据具体的应用场景进行额外的安全设计和实现。
应用场景
- SOAP:适用于对安全性、可靠性和规范性要求较高的企业级应用,如企业应用集成(EAI)、金融交易系统等。在这些场景中,数据的准确性和完整性至关重要,需要严格的协议规范和完善的安全机制来保障。
- RESTful:更适合互联网应用和移动应用开发,以及对性能和灵活性要求较高的场景。在这些场景中,需要快速地响应请求、处理大量的数据,并且要能够方便地与不同的客户端进行交互,RESTful 的简洁性和高效性能够满足这些需求。
三、SMTP协议
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,是用于在网络上进行电子邮件发送的标准协议。以下为你详细介绍:
产生背景
在互联网发展初期,人们需要一种标准化的方式来实现电子邮件的传输,以便不同的计算机系统和邮件服务器之间能够相互通信和交换邮件。SMTP 协议应运而生,它为电子邮件的发送提供了统一的规则和机制,使得全球范围内的电子邮件通信成为可能。
工作原理
发件人邮件客户端 → (建立TCP连接)→ 发件人邮件服务器 → (按照SMTP协议的格式封装成邮件消息)→ 中间邮件服务器消息转发 → 收件人邮件服务器 → 收件人邮件客户端
- 客户端与服务器连接:当用户使用邮件客户端(如 Outlook、Foxmail 等)撰写并发送邮件时,客户端会与发件人的邮件服务器建立一个 TCP 连接,默认端口号为 25(对于加密连接,常用端口号为 587 或 465)。
- 身份验证与协商:连接建立后,客户端和服务器会进行一系列的交互,包括身份验证(如果需要)和协议协商。客户端向服务器发送自己的身份信息和邮件相关的指令,服务器根据这些信息进行响应和验证。
- 邮件传输:客户端将邮件的内容(包括发件人、收件人、主题、正文等)按照 SMTP 协议的格式封装成邮件消息,并发送给服务器。服务器接收到邮件消息后,会检查收件人的地址是否有效,并根据收件人的域名查找对应的邮件服务器。
- 邮件转发:如果收件人的邮件服务器与发件人的服务器不同,发件人的服务器会与收件人的服务器建立连接,并将邮件消息转发给收件人的服务器。这个过程可能会涉及多个中间邮件服务器的转发,直到邮件到达最终的收件人服务器。
- 邮件接收:收件人的服务器接收到邮件后,会将邮件存储在收件人的邮箱中,等待收件人使用邮件客户端来收取邮件。
协议特点
- 简单性:SMTP 协议的设计理念是简单高效,它只关注邮件的传输过程,不涉及邮件的存储和管理。这使得协议的实现相对简单,易于部署和维护。
- 文本协议:SMTP 是一种基于文本的协议,所有的命令和响应都是以 ASCII 文本的形式进行传输的。这使得协议具有良好的可读性和可调试性,方便开发人员进行调试和故障排查。
- 可靠性:SMTP 协议采用了确认机制,服务器在接收到客户端的命令和邮件消息后,会返回相应的状态码来表示处理结果。如果出现错误或异常情况,服务器会返回错误码,客户端可以根据这些信息进行相应的处理,确保邮件的可靠传输。
应用场景
- 电子邮件发送:SMTP 协议最主要的应用场景就是电子邮件的发送。无论是个人用户通过邮件客户端发送邮件,还是企业级应用系统自动发送通知邮件、营销邮件等,都离不开 SMTP 协议的支持。
- 邮件服务器之间的通信:不同的邮件服务器之间通过 SMTP 协议进行邮件的转发和交换,确保全球范围内的电子邮件能够正常传输。
示例代码(Python 中使用 SMTP 发送邮件)
import smtplib
from email.mime.text import MIMEText
from email.header import Header# 发件人邮箱地址
sender = 'your_email@example.com'
# 收件人邮箱地址
receivers = ['recipient_email@example.com']# 邮件内容
message = MIMEText('这是一封测试邮件', 'plain', 'utf-8')
message['From'] = Header(sender, 'utf-8')
message['To'] = Header(','.join(receivers), 'utf-8')
message['Subject'] = Header('测试邮件', 'utf-8')try:# 连接 SMTP 服务器smtpObj = smtplib.SMTP('smtp.example.com', 25)# 登录发件人邮箱smtpObj.login(sender, 'your_email_password')# 发送邮件smtpObj.sendmail(sender, receivers, message.as_string())print("邮件发送成功")
except smtplib.SMTPException as e:print(f"邮件发送失败: {e}")
finally:# 关闭连接smtpObj.quit()
在上述代码中,首先创建了一个邮件消息对象,然后连接到 SMTP 服务器,登录发件人邮箱,最后发送邮件。如果发送过程中出现异常,会捕获异常并输出错误信息。
四、TLS协议
TLS(Transport Layer Security)即传输层安全协议,它是一种广泛用于保障网络通信安全的协议,其前身是 SSL(Secure Sockets Layer)协议。以下从多方面为你详细介绍 TLS 协议:
产生背景
在互联网发展过程中,网络通信的安全性变得至关重要。早期的网络协议在数据传输过程中,数据往往以明文形式存在,这使得数据容易被窃取、篡改,用户的隐私和信息安全受到严重威胁。为了解决这些问题,SSL 协议应运而生,经过不断发展和改进,演变成了现在广泛使用的 TLS 协议。
工作原理
TLS 协议的工作过程主要分为握手阶段和数据传输阶段:
(脑洞:想象成一个组织的两个人在街头遇到开始对暗号 证书就是信物证明)
客户端:你是不是我们组织的接头人?
服务器:我是啊 我给你看信物(递给)
客户端:(接过信物)让我看看是不是真的
信物没问题,于是客户端和服务器使用了和彼此联系的加密对讲机,后续两个人的加密联系就靠它了
客户端:欧了 之后对讲机联系我就行
服务器:欧
- 握手阶段
- 客户端问候:客户端向服务器发送一个问候消息,其中包含客户端支持的 TLS 版本、加密算法列表、随机数等信息。
- 服务器响应:服务器接收到客户端的问候消息后,选择一个 TLS 版本和加密算法,并向客户端发送服务器证书、服务器随机数等信息。
- 证书验证:客户端接收到服务器证书后,会验证证书的有效性,包括证书的颁发机构、有效期、签名等。如果证书无效,客户端会终止连接。
- 密钥交换:客户端和服务器使用协商好的加密算法和随机数生成会话密钥,这个会话密钥将用于后续的数据加密和解密。
- 完成握手:客户端和服务器分别向对方发送一个完成消息,表明握手过程结束,双方可以开始使用会话密钥进行数据传输。
- 数据传输阶段
在握手阶段完成后,客户端和服务器使用会话密钥对要传输的数据进行加密和解密。数据在传输过程中以密文形式存在,即使数据被截取,攻击者也无法获取其中的敏感信息。
协议特点
(信物的确认,对讲机的加密通话,最后一手数据链路层MAC层的验证数据完整性)
- 保密性:TLS 协议使用对称加密算法对数据进行加密,只有持有相同会话密钥的客户端和服务器才能对数据进行解密,从而保证了数据在传输过程中的保密性。
- 完整性:TLS 协议使用消息认证码(MAC)来验证数据的完整性。在数据传输过程中,发送方会计算数据的 MAC 值并附加在数据后面,接收方在接收到数据后会重新计算 MAC 值并与接收到的 MAC 值进行比较,如果两者不一致,则说明数据在传输过程中被篡改。
- 身份验证:TLS 协议通过数字证书对服务器和客户端的身份进行验证,确保通信双方的身份真实可靠。服务器证书由权威的证书颁发机构(CA)颁发,客户端可以通过验证证书的有效性来确认服务器的身份。在一些需要双向身份验证的场景中,客户端也需要向服务器提供自己的证书。
应用场景
- Web 浏览器与服务器通信:在浏览网页时,当网址以
https://
开头时,就表示使用了 TLS 协议进行加密通信。例如,在进行网上购物、登录银行账户等操作时,TLS 协议可以保障用户输入的敏感信息(如用户名、密码、信用卡号等)不被窃取和篡改。 - 电子邮件传输:在电子邮件的发送和接收过程中,TLS 协议可以对邮件内容进行加密,保护用户的隐私。许多邮件服务器都支持 TLS 加密,用户可以在邮件客户端中配置使用 TLS 协议进行安全的邮件传输。
- 即时通讯和语音通话:一些即时通讯应用和语音通话应用也使用 TLS 协议来保障通信的安全性,防止消息和语音内容被监听和窃取。
版本发展
TLS 协议有多个版本,包括 TLS 1.0、TLS 1.1、TLS 1.2 和 TLS 1.3。随着版本的不断更新,协议的安全性和性能不断提高。例如,TLS 1.3 相比之前的版本,简化了握手过程,提高了握手速度,同时增强了加密算法的安全性。目前,建议使用较新的 TLS 版本以获得更好的安全保障。
五、MQTT协议
MQTT(Message Queuing Telemetry Transport)即消息队列遥测传输协议,是一种基于发布 / 订阅模式的轻量级消息传输协议,专为资源受限的设备和低带宽、不稳定的网络环境设计。以下从多方面为你详细介绍:
产生背景
随着物联网(IoT)的快速发展,大量资源受限的设备(如传感器、嵌入式设备等)需要连接到网络进行数据传输和通信。传统的网络协议往往过于复杂,对设备的资源要求较高,不适合在这些设备上使用。MQTT 协议应运而生,它以其轻量级、低功耗、易于实现等特点,成为物联网领域中数据传输的重要协议之一。
工作原理
- 发布 / 订阅模式:MQTT 采用发布 / 订阅的消息传递模式,涉及三个主要角色:发布者(Publisher)、代理服务器(Broker)和订阅者(Subscriber)。发布者负责生成消息并将其发送到代理服务器,订阅者则向代理服务器订阅感兴趣的主题(Topic)。代理服务器作为中间枢纽,负责接收发布者发送的消息,并将消息转发给所有订阅了相应主题的订阅者。
- 主题(Topic):主题是 MQTT 中消息的分类标识,类似于一个标签或目录。发布者在发布消息时需要指定消息所属的主题,订阅者则通过订阅特定的主题来接收相关的消息。主题可以是多层次的,使用斜杠(/)进行分隔,例如
home/livingroom/temperature
表示家庭客厅的温度数据主题。 - QoS(服务质量):MQTT 提供了三种不同级别的服务质量,用于保证消息传输的可靠性。
- QoS 0:最多分发一次,消息发送者只发送一次消息,不保证消息是否到达接收者,可能会出现消息丢失的情况。这种级别适用于对数据丢失不太敏感的场景,如实时传感器数据的传输。
- QoS 1:至少分发一次,消息发送者会确保消息至少被接收者收到一次。如果接收者没有返回确认消息,发送者会重新发送消息,可能会导致消息重复接收。
- QoS 2:仅分发一次,这是最高级别的服务质量,确保消息只被接收者收到一次,不会出现消息丢失或重复的情况,但实现过程相对复杂,会增加一定的开销。
协议特点
- 轻量级:MQTT 协议的报文头部非常小,最小仅为 2 个字节,消息格式简单,对设备的内存和处理能力要求较低,适合在资源受限的设备上运行。
- 低带宽消耗:由于协议的轻量级设计,MQTT 在数据传输过程中占用的带宽较少,能够在低带宽的网络环境下稳定运行,降低了通信成本。
- 支持多种网络:MQTT 可以运行在多种网络协议之上,如 TCP、UDP、TLS 等,能够适应不同的网络环境,包括移动网络、WiFi 等。
- 易于实现:MQTT 协议的规范简洁明了,实现起来相对简单,无论是设备端还是服务器端的开发都比较容易。
应用场景
- 物联网(IoT):在物联网领域,MQTT 被广泛应用于各种设备之间的数据通信,如智能家居、工业监控、智能交通等。例如,智能家居中的传感器可以通过 MQTT 协议将温度、湿度、光照等数据发送到云端服务器,用户可以通过手机 APP 订阅这些数据并进行远程控制。
- 远程监控与数据采集:对于一些分布在不同地理位置的设备或系统,如气象站、油田、电力设备等,可以使用 MQTT 协议进行远程监控和数据采集。设备将采集到的数据实时发送到监控中心,监控中心可以及时了解设备的运行状态并进行相应的处理。
- 即时通讯与消息推送:MQTT 的发布 / 订阅模式也适用于即时通讯和消息推送场景,如社交应用、新闻客户端等。服务器可以将新的消息、通知等内容发布到特定的主题,客户端订阅相应的主题即可实时接收消息。
六、UDDI协议
UDDI(Universal Description, Discovery and Integration)通用描述、发现与集成协议,是一种基于 XML 的标准协议,用于在互联网上发布、查找和整合 Web 服务。下面结合生活中的例子,为你详细解读 UDDI 的概念、工作流程和作用。
核心概念解释
UDDI 就像是一个超级大的 “服务黄页”,只不过这个黄页是在互联网上,专门用于 Web 服务。它主要涉及三个关键角色:
- 服务提供者:好比现实生活中各种店铺的老板,这些老板有自己独特的商品或服务。在 Web 世界里,服务提供者创建并拥有 Web 服务,比如一个电商企业开发了一个用于查询商品库存的 Web 服务。
- 服务注册中心:类似于一个巨大的商业信息数据库,就像城市里专门收集各种店铺信息的大型信息中心。服务提供者把自己的服务信息提交到这里进行存储和管理,方便他人查找。
- 服务消费者:如同寻找特定商品或服务的顾客。在 Web 环境中,当某个软件系统或者开发者需要特定的 Web 服务时,就会到服务注册中心去查找。
数据模型理解
UDDI 有一套数据模型来描述 Web 服务的相关信息,这就好比黄页里对每个店铺的详细介绍:
- 商业实体(BusinessEntity):相当于黄页里的店铺本身,包含了企业或组织的基本信息,如名称、地址、联系方式等。例如一家名为 “ABC 电商” 的企业,这就是一个商业实体。
- 商业服务(BusinessService):是商业实体提供的具体服务内容,类似于店铺里售卖的具体商品或提供的特定服务。比如 “ABC 电商” 提供的 “商品库存查询服务”“订单处理服务” 等。
- 绑定模板(BindingTemplate):说明了如何访问这些服务,就像告诉顾客店铺的具体位置和开门时间,以及通过什么方式可以获得商品或服务。在 Web 服务中,它包含服务的访问地址(如 URL)、所使用的协议(如 SOAP、REST 等)。
- tModel(技术模型):是对服务的技术规范和标准的定义,好比店铺里商品的生产标准和规格说明。它可以描述服务的接口、数据格式、业务规则等信息,让服务消费者清楚知道如何与服务进行交互。
工作流程示例
下面以一个在线旅游服务为例,说明 UDDI 的工作流程:
服务发布
- 有一家名为 “TravelPro” 的在线旅游公司,它开发了一个 Web 服务,用于提供机票预订功能。
- TravelPro 公司作为服务提供者,将公司信息(商业实体)、机票预订服务(商业服务)、服务的访问地址和使用的协议(绑定模板)以及服务的技术规范(tModel)等信息整理成符合 UDDI 规范的数据。
- 然后通过 UDDI API(应用程序编程接口)将这些信息提交到 UDDI 注册中心。注册中心会对提交的信息进行验证,如果信息合法,就将其存储在数据库中。
服务发现
- 现在有一家旅行社(服务消费者),想要为客户提供更便捷的机票预订服务,于是它决定寻找合适的机票预订 Web 服务。
- 旅行社通过 UDDI API 向 UDDI 注册中心发送查询请求,例如查询 “提供机票预订服务的 Web 服务”。
- 注册中心接收到查询请求后,在存储的信息中进行搜索,找到 TravelPro 公司发布的机票预订服务信息,并将这些信息返回给旅行社。
服务调用
- 旅行社根据从 UDDI 注册中心获取的服务信息,得知了 TravelPro 公司机票预订服务的访问地址和使用的协议。
- 旅行社的系统按照这些信息调用 TravelPro 公司的机票预订服务,为客户完成机票预订业务。
应用场景及意义
UDDI 的出现使得不同企业和组织之间的 Web 服务能够更方便地进行共享和集成。在上述例子中,如果没有 UDDI 这样的注册中心,旅行社可能需要花费大量的时间和精力去寻找合适的机票预订服务,而通过 UDDI 注册中心,它可以快速准确地找到所需服务,提高了工作效率和业务的灵活性。同时,对于服务提供者来说,UDDI 也为他们提供了一个更广阔的市场,能够让更多的服务消费者发现和使用他们的服务。
相互协作实现 Web 服务完整流程
- UDDI 负责服务的发布与发现:UDDI 提供了一个集中的注册中心,服务提供者可以将自己的 Web 服务信息(包括服务的描述、访问地址等)发布到 UDDI 注册中心。服务消费者则可以通过 UDDI 注册中心搜索和发现符合自己需求的 Web 服务。简单来说,UDDI 解决了 “在哪里找到服务” 的问题。
- SOAP 负责服务的调用与通信:当服务消费者通过 UDDI 找到所需的 Web 服务后,就需要与服务提供者进行通信并调用该服务。SOAP 是一种基于 XML 的协议,用于在网络中交换结构化信息,它定义了消息的格式和通信的规则。服务消费者可以使用 SOAP 协议构建请求消息,发送给服务提供者,服务提供者接收到请求后,同样使用 SOAP 协议返回响应消息。因此,SOAP 解决了 “如何调用服务” 的问题。
相关文章:
接口测试-API测试中常用的协议(中)
一、SOAP SOAP(Simple Object Access Protocol)即简单对象访问协议,是一种基于 XML 的用于在网络中交换结构化信息的协议,常用于 Web 服务之间的通信。以下为你详细介绍: 产生背景 在互联网发展过程中,需…...

植物大战僵尸杂交版v3.2.1最新版本(附下载链接)
B站游戏作者潜艇伟伟迷于12月21日更新了植物大战僵尸杂交版3.2.1版本!!!,有b站账户的记得要给作者三连关注一下呀! 不多废话下载链接放上: 夸克网盘链接::https://pan.quark.cn/s/e5…...

java每日精进 2.20 MQ相关复健
在 RabbitMQ 中,消息消费者对消息的签收(acknowledgment)可以通过三种方式进行管理:自动签收、手动签收 和 拒绝签收。它们主要控制消费者如何处理消息确认和消息的重新排队。下面详细讲解它们的区别,并通过代码示例展…...

【设计模式精讲】结构型模式之代理模式(静态代理、JDK动态代理、cglib动态代理)
文章目录 第五章 结构型模式5.1 代理模式5.1.1 代理模式介绍5.1.2 代理模式原理5.1.3 静态代理实现5.1.4 JDK动态代理5.1.4.1 JDK动态代理实现5.1.4.2 类是如何动态生成的5.1.4.3 代理类的调用过程 5.1.5 cglib动态代理5.1.5.1 cglib动态代理实现5.1.5.2 cglib代理流程 5.1.6 代…...

京东广告基于 Apache Doris 的冷热数据分层实践
一、背景介绍 京东广告围绕Apache Doris建设广告数据存储服务,为广告主提供实时广告效果报表和多维数据分析服务。历经多年发展,积累了海量的广告数据,目前系统总数据容量接近1PB,数据行数达到18万亿行,日查询请求量8…...

win11 安装pyenv来管理python
1、使用power shell或者cmd来安装: 2、使用pyenv 发现并没有pyenv。 3、在环境变量中增加: 路径:右键--此电脑--属性--高级系统设置--环境变量--Path--增加刚才--target所在的目录D:\tools\pyenv\pyenv-win\bin。 先退出当前的,…...
【AI】GitHub Copilot
GitHub Copilot 是一款由 GitHub 和 OpenAI 合作开发的 AI 编程助手,它可以在多种开发工具中使用。以下是 GitHub Copilot 支持的主要开发工具和平台: 1. Visual Studio Code (VS Code) 官方支持:GitHub Copilot 在 VS Code 中拥有最完整的集…...

【LeetCode 热题100】76. 最小覆盖子串的算法思路及python代码
76. 最小覆盖子串 给你一个字符串 s s s、一个字符串 t t t。返回 s s s 中涵盖 t t t 所有字符的最小子串。如果 s s s 中不存在涵盖 t t t 所有字符的子串,则返回空字符串 ‘ ‘ " \quad" ‘‘" 。 注意: 对于 t t t 中重复…...
力扣-回溯-17 电话号码的字母组合
思路 和之前的回溯不同的是,要遍历完所有的数字,并且在单层递归逻辑里需要遍历一整个字符串 代码 class Solution { public:vector<string> letters {"", "", "abc", "def", "ghi", "…...

[AHOI2018初中组] 分组---贪心算法
贪心没套路果真如此。 题目描述 小可可的学校信息组总共有 n 个队员,每个人都有一个实力值 ai。现在,一年一度的编程大赛就要到了,小可可的学校获得了若干个参赛名额,教练决定把学校信息组的 n 个队员分成若干个小组去参加这场…...

知识图谱-学习计划
✨知识图谱知识学习,给我点赞!🌟🌟🌟 🌟什么是知识图谱? 知识图谱是一种通过图结构表示知识的技术,它可以帮助我们更清晰地理解和组织信息。无论是学习、工作还是生活,知…...

网安作业3
标准版 接口ip配置 r2 [r2]interface GigabitEthernet 0/0/0 [r2-GigabitEthernet0/0/0]ip address 13.0.0.3 24 [r2-GigabitEthernet0/0/0]interface GigabitEthernet 0/0/1 [r2-GigabitEthernet0/0/1]ip address 100.1.1.254 24 [r2-GigabitEthernet0/0/1]interface Gigab…...
快速提升网站收录:内容创作的艺术
快速提升网站收录,内容创作是关键。以下是一些关于内容创作以提升网站收录的艺术性建议: 一、关键词研究与优化 选择长尾关键词:进行深入的关键词研究,选择既符合网站主题又具有一定搜索量的长尾关键词。这些关键词通常更具体&a…...
【C语言】CreateFile函数用法介绍
目录 一、函数原型与基本功能 二、参数详解 1. lpFileName(文件路径) 2. dwDesiredAccess(访问权限) 补充说明 3. dwShareMode(共享模式) 5. dwCreationDisposition(创建策略)…...

蓝桥杯好数
样例输入: 24 输出:7 输入:2024 输出: 150 思路:本题朴素方法的时间复杂度是O(n * log10(n)) ,不超时。主要考察能否逐位取数,注意细节pi,这样不会改变i,否则会导致循环错误。 #in…...
SOME/IP--协议英文原文讲解10
前言 SOME/IP协议越来越多的用于汽车电子行业中,关于协议详细完全的中文资料却没有,所以我将结合工作经验并对照英文原版协议做一系列的文章。基本分三大块: 1. SOME/IP协议讲解 2. SOME/IP-SD协议讲解 3. python/C举例调试讲解 4.2.2 Req…...

欢乐力扣:赎金信
文章目录 1、题目描述2、 代码 1、题目描述 赎金信,给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。如果可以,返回 true ;否则返回 false 。magazine 中的每个字符只能在…...
【量化科普】Standard Deviation,标准差
【量化科普】Standard Deviation,标准差 🚀🚀🚀量化软件开通🚀🚀🚀 🚀🚀🚀量化实战教程🚀🚀🚀 在量化投资领域…...

stm32单片机个人学习笔记15(I2C通信协议)
前言 本篇文章属于stm32单片机(以下简称单片机)的学习笔记,来源于B站教学视频。下面是这位up主的视频链接。本文为个人学习笔记,只能做参考,细节方面建议观看视频,肯定受益匪浅。 STM32入门教程-2023版 细…...
网络安全防护
一:物理安全防护 直接的物理破坏所造成的损失远大于通过网络远程攻击 提高物理安全需关注的问题: 1: 服务器和安全设备是否放置在上锁的机房内? 2: 网络设备是否被保护和监控? 3: 是否有无关人员单独在敏感区域工作&…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
Admin.Net中的消息通信SignalR解释
定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...

srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...

【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...

基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...

20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...