Как настроить сообщения SOAP с XML-сериализацией
Этот раздел посвящен технологии прежних версий. Веб-службы XML и клиенты веб-служб XML должны создаваться с использованием Windows Communication Foundation.
Пространство имен System.Web.Serialization обеспечивает множество атрибутов для управления XML-сериализацией, которые можно применять к параметрам и возвращаемым значениям методов веб-службы. В этом разделе демонстрируется использование атрибута XmlElementAttribute.
Указание имени элемента XML, представляющего параметр
Примените атрибут XmlElement к параметру, задающему имя элемента, и дополнительно пространство имен, если параметру задан формат Literal. Если параметру задан формат Encoded, примените к нему атрибут SoapElement.
В следующем примере кода предполагается, что элементы, представляющие параметры, имеют следующие имена:
MyAddressElement
,MyZipElement
иReturnValueElement
. Также предполагается, что элемент, представляющий возвращаемое значение, имеет имяReturnValueElement
. В этом примере методы веб-службы имеют формат 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
Веб-служба ожидает следующий запрос 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-веб-службы
Другие ресурсы
Настройка форматирования сообщения SOAP
Introducing XML Serialization
XML-веб-службы с использованием ASP.NET