如何:使用 XML 序列化自定义 SOAP 消息
本主题专门介绍一项旧有技术。现在应通过使用以下链接来创建 XML Web 服务和 XML Web 服务客户端: Windows Communication Foundation.
System.Web.Serialization 命名空间提供了大量用于控制 XML 序列化且适用于 Web 服务方法的参数和返回值的特性。本主题演示如何使用 XmlElementAttribute 特性。
指定表示某个参数的 XML 元素的名称
向该参数应用 XmlElement 特性,此特性可为元素指定所需的名称,如果该参数的格式设置为 Literal,它还可以指定命名空间的名称。如果该参数的格式设置为 Encoded,则应向该参数应用 SoapElement 特性。
下面的代码示例要求表示参数的元素名称为
MyAddressElement
、MyZipElement
和ReturnValueElement
。此外,它还要求表示返回值的元素名称为ReturnValueElement
。在该示例中,Web 服务方法的格式为 Document,这是 ASP.NET 的默认设置。<%@ WebService Language="C#" Class="SoapDocumentServiceSample" %> using System.Web.Services; using System.Web.Services.Protocols; using System.Xml.Serialization; [WebService(Namespace="https://www.contoso.com")] public class SoapDocumentServiceSample { [ WebMethod ] [ return: XmlElement("ReturnValueElement",IsNullable=false)] public Address ValidateAddress( [XmlElement("MyAddressElement")] Address MyAddress, [XmlElement("MyZipElement")] bool useZipPlus4) { useZipPlus4 = true; return new Address(); } }
<%@ WebService Language="VB" Class="SoapDocumentServiceSample" %> Imports System.Web.Services Imports System.Web.Services.Protocols Imports System.Xml.Serialization <WebService(Namespace := "https://www.contoso.com")> _ Public Class SoapDocumentServiceSample < WebMethod > _ Public Function ValidateAddress( _ <XmlElement("MyAddressElement")> MyAddress As Address, _ <XmlElement("MyZipElement")> useZipPlus4 As Boolean) As <XmlElement("ReturnValueElement",IsNullable :=false)> _ Address useZipPlus4 = True Return new Address() End Function End Class
Web 服务应收到以下 SOAP 请求。请注意元素名称与 XmlElement 特性中指定的哪些内容匹配,它们与参数名称之间存在哪些差别。
<?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="https://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ValidateAddress xmlns="http://tempuri.org/"> <MyAddressElement> <Street>string</Street> <City>string</City> <Zip>string</Zip> </MyAddressElement> <MyZipElement>boolean</MyZipElement> </ValidateAddress> </soap:Body> </soap:Envelope>
另请参见
参考
System.Xml.Serialization Namespace
SoapDocumentMethodAttribute
SoapRpcMethodAttribute
SoapDocumentServiceAttribute
SoapRpcServiceAttribute
概念
使用 SOAP 扩展修改 SOAP 消息
生成 XML Web services 客户端
其他资源
自定义 SOAP 消息的格式设置
Introducing XML Serialization
使用 ASP.NET 的 XML Web services