方法 : 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

その他の技術情報

SOAP メッセージの書式のカスタマイズ

Footer image

Copyright © 2007 by Microsoft Corporation.All rights reserved.