SOAP(简单访问对象协议)是一种基于 XML 的协议,为用不同语言编写并在不同平台上运行的应用程序提供相互交互的工具。它通过 HTTP 运行。 SOAP 是一种轻量级协议,因为它基于 XML,而 XML 是一种轻量级语言。 C# SOAP 独立于它所工作的平台和操作系统,这使得它更容易在不同平台上工作的不同应用程序之间交换数据。它是一种松散耦合的协议,因为它不需要通信应用程序使用相同的语言。
语法
定义 SOAP 消息的语法如下:
<SOAP : Envelope xmlns : SOAP = "https://www.educba.com/"> <SOAP : Header> </SOAP : Header> <SOAP : Body> <SOAP : Fault> </SOAP : Fault> </SOAP : Body> </SOAP : Envelope>
定义 SOAP 消息的语法规则如下:
SOAP 消息的编码应使用 XML 语言完成。它应该使用 SOAP Envelope 命名空间。它不应包含 DTD 参考和 XML 处理指令。
SOAP 适用于编组和解组机制。它使用 HTTP 协议将基于 XML 的消息(称为 SOAP 消息)发送到服务器进行处理。这些 SOAP 消息包含要处理的信息。我们可以将其称为 HTTP 请求,这种将信息包装到 SOAP 消息中的方法称为编组。
现在,服务器接收来自客户端的请求并解开客户端发送的 SOAP 消息。然后,服务器处理该请求并以 SOAP 消息的形式向客户端发送适当的响应。这种解包信息的方法称为解组。
Soap 消息由以下元素组成:
1。 SOAP Envelope 元素:该元素是 SOAP 消息的根元素。它告诉我们特定的 XML 文档是一个 SOAP 消息。它包含 SOAP 消息的详细信息。标头元素:SOAP 标头元素是 SOAP 消息的可选元素。但如果 SOAP 消息包含此元素,那么它应该是根 Envelope 元素的第一个子元素,并且 Header 的子元素应该被限定为命名空间。该元素包含付款信息、身份验证凭据等信息。 SOAP Body 元素:该元素包含要在两个端点之间交换的实际信息。它包含请求和响应信息。
请在下面找到包含员工详细信息的 SOAP 响应消息中的 SOAP Body 元素示例:
代码:
<soap : Body> <GetEmployeeDetails> <EmployeeName>John Duffel</EmployeeName> <EmployeeCode>EI66</EmployeeCode> </GetEmployeeDetails> </soap: Body>
2。 SOAP 错误元素: 当 SOAP 消息发送到服务器时,服务器返回的响应可以包含请求中成功处理请求所需的信息,也可以包含错误消息。因此,该元素包含与错误相关的信息。如果 SOAP 消息包含此元素,那么它应该是 Body 元素的子元素。
Fault元素的子元素如下:
请在下面找到显示 SOAP 消息结构的图表:
带有彩色背景的元素是 SOAP 消息的可选元素。
让我们看看用 C# 创建 SOAP Web 服务所需的步骤。步骤如下:
在此服务文件中,您可以添加服务代码并执行它,如示例部分下的示例所示。
以下是提到的示例:
代码:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; namespace WebApplication4 { [WebService(Name ="Sample Web Service")] public class WebService1 : System.Web.Services.WebService { [WebMethod] public string Message() { return "Learning SOAP web service"; } } }
输出:
点击“消息”(Web 方法)后,我们将得到以下输出:
The SOAP request and response in the above snapshot are as follows:
Code:
POST /WebService1.asmx HTTP/1.1 Host: localhost Content-Type: text/xml; charset=utf-8 Content-Length: length SOAPAction: "http://tempuri.org/Message" <?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> <Message xmlns="http://tempuri.org/" /> </soap:Body> </soap:Envelope>
In the above message, the first element is the Envelope element. Then this message contains the Body element, which provides details of the SOAP message.
Code:
HTTP/1.1 200 OKContent-Type: text/xml; charset=utf-8Content-Length: length <?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> <MessageResponse xmlns="http://tempuri.org/"> <MessageResult>string</MessageResult> </MessageResponse> </soap:Body> </soap:Envelope>
The first line of this message contains code ‘200’, which indicates a successful response from the server. This message contains an Envelope element and then a Body element containing details of the response from the server. We can see a tag ‘MessageResult’ with a value string, indicating that our Web Method (Message) result will be of a type string.
After clicking on the ‘Invoke’ button in the second snapshot, we will get the final result as shown below:
Output:
SOAP i.e. Simple Object Access Protocol, is a lightweight and loosely coupled protocol that can exchange data between applications written in different programming languages and working on different platforms. It exchanges data in the form of SOAP messages in XML language and works over HTTP protocol.
以上是C# 肥皂的详细内容。更多信息请关注PHP中文网其他相关文章!