SOAPとは何ですか

6264 ワード

この章の主な目的は、SOAPを理解することです.
SOAP(Simple Object Access Protcal)シンプルオブジェクトアクセスプロトコル
以下はウィキペディアの説明です.
標準化された通信仕様は、主にWebサービス(web service)に用いられる.SOAPの出現は、ウェブサーバ(Web Server)がXMLデータベースからデータを抽出する際に、時間をかけてページをフォーマットする必要がなく、異なるアプリケーション間でHTTP通信協定を通して、XML形式で互いにデータを交換し、プログラミング言語、プラットフォーム、ハードウェアと無関係にすることができるためである.この基準はIBM、Microsoft、UserLand、DevelopMentorによって1998年に共同で提出され、IBM、蓮の花(Lotus)、コノテガシワ(Commpaq)などの会社の支持を得て、2000年に万維網連盟(World Wide Web Contium;W 3 C)に提出されました.現在SOAP 1.1版は業界共通の基準で、第二世代のXML協定です.(第一世代の主な代表的な技術はXML-RPCおよびWDX)である.
SOAP使用プロセスを簡単な例で説明すると、SOAPメッセージは、ウェブService機能を有するWebサイトに送信することができ、例えば、住宅価格情報を含むデータベース、メッセージのパラメータには、これはクエリーメッセージであると明記されています.このサイトポイントはXML形式の情報を返します.(価格、位置、特徴、またはその他の情報)データは、標準化された分析可能な構造で伝達されるので、直接に第三者サイトに利用されても良いです.
個人的な理解をまとめますと、SOAPはW 3 Cによって維持される業界の標準であり、XMLに基づいており、共通性があります.
SOAPメッセージの例
要求
POST /InStock HTTP/1.1
Host: www.example.org
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn

<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Header> <m:Trans xmlns:m="http://www.w3school.com.cn/transaction/" soap:mustUnderstand="1" soap:actor="http://www.w3school.com.cn/appml/">234</m:Trans> </soap:Header>
  <soap:Body xmlns:m="http://www.example.org/stock">
    <m:GetStockPrice>
      <m:StockName>IBM</m:StockName>
    </m:GetStockPrice>
  </soap:Body>
  
</soap:Envelope>
 
応答
HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn

<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">

  <soap:Body xmlns:m="http://www.example.org/stock">
    <m:GetStockPriceResponse>
      <m:Price>34.5</m:Price>
    </m:GetStockPriceResponse>
  </soap:Body>
  
</soap:Envelope>

 分析して解説します.ウィキペディアではこのSOAPの内容を紹介しています.
 EvelopeはSOAPのルート要素であり、必須要素である.
 xmlns:soappenv="http://schemas.xmlsoap.org/soap/envelope/「
 SOAPの名前空間を定義し、このXMLをSOAPにパッケージ化します.この名前空間は「http://schemas.xmlsoap.org/soap/envelope/」ではない場合はFault元素に異常を投げます.

soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"

, 。

<soap:Header> <m:Trans xmlns:m="http://www.w3school.com.cn/transaction/" soap:mustUnderstand="1">234</m:Trans> </soap:Header>
Header , ( 、 、 )。 。 Header

soap:actor="URI" 
SOAP , ,SOAP actor Header
 soap:mustUnderstand="1
, , 。
 
  BODY要素の中の要素はSOAPの要素ではなく、これらの要素はすべて情報転送中のデータコンテンツであるので、より情報ごとに異なる.
 
SOAPのFault
エラーメッセージを示すために、いくつかの属性についても説明しないで引用してみましょう.
SOAPのFault要素は、以下のサブ要素を有する.
サブ要素                                  説明
<faultcode>                         故障を識別するためのコード
<fault string>                        人が読むことができる故障に関する説明
<faultactor>                        誰が故障したのかに関する情報
<detail>                               Body要素に関するアプリケーション専用エラーメッセージを残します.
SOAP Faultコード
以下で定義されるfaultcodeの値は、エラー時のfaultcodeの要素を説明するために必要です.
エラー                     説明
Version Mismatch             SOAP Evelope元素の無効な名前空間が発見されました.
MusstUnderstand              Header要素の1つの直接的なサブ要素(“1”に設定されたmusstUnderstand属性を持つ)は理解できない.
Cient                             メッセージは正しく構成されていない、または不正な情報が含まれている.
Server                           サーバーに問題があって処理が進められません.
 
SOAPプロトコルの内容は基本的にこのようです.
一番上のHTTPプロトコルについて説明します.
HTTPクライアントは、TCPを使ってHTTPサーバと接続します.接続が確立されたら、クライアントはサービス側に要求を送信することができます.
POST /item HTTP/1.1
Host: 189.123.345.239
Content-Type: text/plain
Content-Length: 200
サービス側はこのクライアントの要求を完了した後、対応するものを送信します.成功したら.
200 OK
Content-Type: text/plain
Content-Length: 200
 失敗しました
400 Bad Request
Content-Length: 0
 成功してコード200に戻りました.失敗は400です.
 
SOAP HTTP Binding
SOAP方法は、SOAP符号化規則に準拠したHTTP要求/応答を意味する.
HTTP+XML=SOAP
SOAP要求は、HTTP POSTまたはHTTP GET要求であるかもしれない.
HTTP POST要求は、少なくとも2つのHTTPヘッダ:Content-TypeとConteet-Lengthを規定する.
Conteen-Type
SOAPの要求および応答のContent−Typeヘッダは、メッセージのMIMEタイプを定義することができ、また要求または応答のためのXML本体の文字コード(オプション)を定義することができる.
構文
Content-Type: MIMEType; charset=character-encoding 
POST /item HTTP/1.1
Content-Type: application/soap+xml; charset=utf-8
Conteet Length
SOAPの要求および応答のContent−Lengthヘッダは、要求または応答主体のバイト数を規定する.
構文
Content-Length: bytes 
POST /item HTTP/1.1
Content-Type: application/soap+xml; charset=utf-8
Content-Length: 250
 

 
 
 
 
サーバーに問題があって処理が進められません.