wsdl

6177 ワード

WSDL文書例
次の例は、株式のオファーを提供する簡単なWebサービスのWSDL定義である.このサービスサポートは、HTTP上でSOAP 1.1プロトコルを実行することによって、GetLastTradePriceという単一の動作を実現する.この要求は、文字列の種類のtickerSymbolを受け取り、タイプが浮動小数点の価格を返します.
<?xml version="1.0"?>
<definitions name="StockQuote" 
             targetNamespace="http://example.com/stockquote.wsdl"
             xmlns:tns="http://example.com/stockquote.wsdl"
             xmlns:xsd1="http://example.com/stockquote.xsd"
             xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
             xmlns="http://schemas.xmlsoap.org/wsdl/">
             
 
  <types>
    <schema targetNamespace="http://example.com/stockquote.xsd"
            xmlns="http://www.w3.org/1999/XMLSchema">
      <element name="TradePriceRequest">
        <complexType>
          <all>
            <element name="tickerSymbol" type="string"/>
          </all>
        </complexType>
      </element>
      <element name="TradePriceResult">
        <complexType>
          <all>
            <element name="price" type="float"/>
          </all>
        </complexType>
      </element>
    </schema>
  </types>
 
上記の部分はデータタイプの定義であり、ここでは2つの要素を定義する構造である.
  • TradePrice Request(取引価格要求):この要素を文字列要素を含む複合タイプ要素として定義します.
  • TradePriceResoult(取引価格):この要素を浮動小数点要素(price)を含む複合タイプ要素として定義します.
  •  <message name="GetLastTradePriceInput">
        <part name="body" element="xsd1:TradePriceRequest"/>
      </message>
     
      <message name="GetLastTradePriceOutput">
        <part name="body" element="xsd1:TradePriceResult"/>
      </message>
    
     
    この部分はメッセージフォーマットの抽象的な定義であり、2つのメッセージフォーマットが定義されている.
  • GetlastTradePrice Input(最後の取引価格を取得するための要求メッセージフォーマット):メッセージ・クリップから構成され、メッセージ・クリップの名前はbodyであり、具体的な要素タイプはTradePrice Requestである.(前に定義されています)
  • GetLastTradePriceOutput(最後の取引価格を取得する応答メッセージフォーマット):メッセージ断片から構成され、メッセージ断片の名前はbodyであり、具体的な要素タイプはTradePrice Resoultである.(前に定義されています)
  •  <portType name="StockQuotePortType">
        <operation name="GetLastTradePrice">
          <input message="tns:GetLastTradePriceInput"/>
          <output message="tns:GetLastTradePriceOutput"/>
        </operation>
      </portType>
    
     
    この部分はサービスアクセスポイントの呼び出しモードのタイプを定義しており、StockQuoteServiceのあるエントリタイプは要求/応答モードであり、要求メッセージはGetlastTradePrice Inputであり、応答メッセージはGetLastTradePrice Outputであることを示している.
     <binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType">
        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
          <operation name="GetLastTradePrice">
            <soap:operation soapAction="http://example.com/GetLastTradePrice"/>
              <input>
                <soap:body use="literal" namespace="http://example.com/stockquote.xsd"
                           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
              </input>
              <output>
                <soap:body use="literal" namespace="http://example.com/stockquote.xsd"
                           encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
              </output>
            </soap:operation>
          </operation>
        </soap:binding>
      </binding>
    
     
    この部分は、サービス・アクセスポイントの抽象的な定義をSOAP HTTPと結びつけ、SOAP/HTTPを介して前に述べたアクセス・ポイント・タイプの展開に従ったアクセス・エントリにアクセスする方法を説明する.具体的なSOAP呼び出し時に使用すべきsopActionは「http://example.com/GetLastTradePrice要求/応答メッセージの符号化スタイルは、いずれもSOAP仕様のデフォルト定義の符号化スタイルを採用すべきである.http://schemas.xmlsoap.org/soap/encoding/「です
     <service name="StockQuoteService">
        <documentation>      </documentation> 
        <port name="StockQuotePort" binding="tns:StockQuoteBinding">
        <soap:address location="http://example.com/stockquote"/>
        </port>
      </service>
     
    </definitions>
    
     
    この部分は具体的なWebサービスの定義であり、このStockQuoteServiceというWebサービスの中で、サービスアクセス・エントランスを提供しています.アクセス・アドレスは「StockQuoteService」です.http://example.com/stockquote「使用するメッセージモードは、前のbindingによって定義されている.
    このWSDL文書の説明によれば、具体的なWebサービスの使用において、具体的に発生するSOAPインタラクションは、以下のようになるかもしれない.
    SOAPメッセージ要求:
    POST /StockQuote HTTP/1.1
    Host: example.com
    Content-Type: text/xml; charset="utf-8"
    Content-Length: nnnn
    SOAPAction: "http://example.com/GetLastTradePrice"
    
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                       SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
      <SOAP-ENV:Body>
        <m:TradePriceRequest xmlns:m="http://example.com/stockquote.xsd">
          <tickerSymbol>MSFT</tickerSymbol >
        </m:TradePriceRequest>
      </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    
     
    SOAPメッセージ応答:
    HTTP/1.1 200 OK
    Content-Type: text/xml; charset="utf-8"
    Content-Length: nnnn
    
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                       SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
      <SOAP-ENV:Body>
        <m:TradePriceResult xmlns:m=" http://example.com/stockquote.xsd ">
          <price>74.5</price>
        </m:TradePriceResult >
      </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>