方法 : Web サービス メソッド向けにパラメータと戻り値の形式を制御する
メソッドのパラメータと戻り値に対応する XML 要素の書式設定 (Use) 用に、Web サービス記述言語 (WSDL) には SOAP Encoded と Literal という 2 つの選択肢が用意されています。.NET Framework では、コード内でどちらを使用するかを属性を使用して制御します。ASP.NET には、XML の書式設定方法を制御する拡張アーキテクチャが用意されていますが、パラメータがシリアル化される順序については保証されていません。
Literal パラメータ書式設定を指定するには
プロキシ クラスのメソッドに SoapDocumentMethod 属性を適用し、Use プロパティを SoapBindingUse.Literal に設定します。
SoapBindingUse 列挙体により、ASP.NET を使用して作成した Web サービスで有効なパラメータ書式設定スタイルが指定されます。
[SoapDocumentMethod( "https://www.contoso.com/DocumentLiteral", RequestNamespace="https://www.contoso.com", ResponseNamespace="https://www.contoso.com", Use=SoapBindingUse.Literal)] public string DocumentLiteral(Address1 address, bool useZipPlus4) {
<SoapDocumentMethod( _ "https://www.contoso.com/DocumentLiteral", _ RequestNamespace:="https://www.contoso.com", _ ResponseNamespace:="https://www.contoso.com", _ Use:=SoapBindingUse.Literal)> _ Public Function DocumentLiteral(ByVal address As Address1, _ ByVal useZipPlus4 As Boolean) As String
DocumentLiteral
Web サービス メソッドに対する SOAP 要求の XML 部分を次に示します。パラメータは Body 要素内にあり、XSD スキーマを参照するため、独立した XML ドキュメントとしてエンコードされます。<?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> <DocumentLiteral xmlns="https://www.contoso.com"> <address> <Street>One Microsoft Way</Street> <City>Redmond</City> <Zip>98052</Zip> </address> <useZipPlus4>True</useZipPlus4> </DocumentLiteral> </soap:Body> </soap:Envelope>
Encoded パラメータ書式設定を指定するには
プロキシ クラスのメソッドに SoapDocumentMethod 属性または SoapRpcMethod 属性を適用し、Use プロパティを SoapBindingUse.Encoded に設定します。
Literal パラメータ書式設定スタイルとは異なり、Encoded パラメータ書式設定スタイルは、両方の Web サービス メソッドの書式設定スタイルと組み合わせて使用できます。Web サービス メソッドの書式設定スタイルの詳細については、「.Net Framework による SOAP 形式のサポート」を参照してください。
[SoapDocumentMethod("https://www.contoso.com/DocumentEncoded", RequestNamespace="https://www.contoso.com", ResponseNamespace="https://www.contoso.com", Use=SoapBindingUse.Encoded)] public string DocumentEncoded(Address address, bool useZipPlus4) {
<SoapDocumentMethod("https://www.contoso.com/DocumentEncoded", _ RequestNamespace:="https://www.contoso.com", _ ResponseNamespace:="https://www.contoso.com", _ Use:=SoapBindingUse.Encoded)> _ Public Function DocumentEncoded(ByVal address As Address, _ ByVal useZipPlus4 As Boolean) As String
DocumentEncoded
サービス メソッドに対する SOAP 要求の XML 部分を次に示します。このパラメータは、SOAP 仕様のセクション 5 で規定されるエンコード規則に従って書式設定されるため、パラメータの表現方法が Literal 書式設定スタイルとは大きく異なっています。特に、address
パラメータは単純データ型ではないため、注意が必要です。<?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:soapenc="https://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="https://www.contoso.com" xmlns:tnsTypes="https://www.contoso.com/encodedTypes" xmlns:wsdl="https://schemas.xmlsoap.org/wsdl/" xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/"> <soap:Body soap:encodingStyle="https://schemas.xmlsoap.org/soap/encoding/"> <tnsTypes:DocumentEncoded> <address href="#1" /> <useZipPlus4>boolean</useZipPlus4> </tnsTypes:DocumentEncoded> <tnsTypes:Address id="1"> <Street id="2">string</Street> <City id="3">string</City> <Zip id="4">string</Zip> </tnsTypes:Address> </soap:Body> </soap:Envelope>
関連項目
参照
SoapDocumentMethodAttribute
SoapRpcMethodAttribute
その他の技術情報
Copyright © 2007 by Microsoft Corporation.All rights reserved.