SOAP

ここでは、SOAPプロトコルを独自に実装しようとしているユーザを対象に、クライアントとサーバの間でやり取りされるリクエストとレスポンスの種類、各リクエストおよびレスポンスのメッセージ形式について解説します。

Web Interface V5.0 で使用するSOAPのバージョンは 1.1 または 1.2 であり、以下の名前空間を使用します。

execute

"execute" は、XSLTプロセッサを使った文書変換や AH Formatter によるFOドキュメントのレンダリングなどを行います。リクエストにはサーバで実行する処理を記述したスクリプトと処理対象のデータが含まれ、レスポンスには処理結果のデータが含まれます。受け渡すデータの形式が不正だったりデータの受け渡しやサーバでの処理でエラーが発生した場合は、SOAP Fault が返ります。

execute リクエスト

executeリクエストは、DIMEDirect Internet Message Encapsulation)形式で送られます。SOAPエンベロープがDIMEのメインパートとして送られ、スクリプト文字列や処理対象データはDIMEのアタッチメントデータとして送られます。アタッチメントデータは、メインパートのscript要素またはfile要素のhref属性を介して参照されます。以下にexecuteリクエストのSOAPエンベロープの内容を示します。

<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope/"
                   xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding/"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:ns2="http://www.antennahouse.com/AXDServer/2005/axds/"
                   xmlns:ns1="http://www.antennahouse.com/AXDServer/2005/Execute/binding">
 <SOAP-ENV:Body>
  <ns1:Execute>
   <script language="" href="cid:Contents ID"/>
   <files SOAP-ENC:arrayType="ns2:File[n]">
    <file name="Data name" href="cid:Contents ID"/>
    <file name="Data name" href="cid:Contents ID"/>
      :
      :
   </files>
  </ns1:Execute>
 </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

execute レスポンス

executeレスポンスもexecuteリクエストと同様にDIME形式で送られます。SOAPエンベロープがDIMEのメインパートとなり、処理結果データがDIMEのアタッチメントデータとして送られます。以下にexecuteレスポンスのSOAPエンベロープの内容を示します。

<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope/"
                   xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding/"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:ns2="http://www.antennahouse.com/AXDServer/2005/axds/"
                   xmlns:ns1="http://www.antennahouse.com/AXDServer/2005/Execute/binding">
 <SOAP-ENV:Body>
  <ns1:ExecuteResponse>
   <SOAP-RPC:result xmlns:SOAP-RPC="http://www.w3.org/2003/05/soap-rpc">files</SOAP-RPC:result>
   <files SOAP-ENC:arrayType="ns2:File[n]">
    <file name="Data name" href="cid:Contents ID"/>
    <file name="Data name" href="cid:Contents ID"/>
      :
      :
   </files>
  </ns1:ExecuteResponse>
 </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

login

"login" は、クライアントとサーバの間のセッションを確立します。リクエストにはユーザIDとパスワードが含まれ、レスポンスにはログインの結果が含まれます。 loginリクエストが発行されて受け入れられた後、後述のlogoutリクエストが発行されるまでの間、サーバではセッションに対応するスクリプトの実行環境が保持されます。つまり、セッション確立中に複数のexecuteリクエストを発行すると、ひとつのexecuteリクエストが終了した時点でのサーバの状態が次のexecuteリクエストに引き継がれることになります。

login リクエスト

loginリクエストには、ユーザIDとパスワードが含まれます。以下にloginリクエストのSOAPエンベロープの内容を示します。

<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope/"
                   xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding/"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:ns2="http://www.antennahouse.com/AXDServer/2005/axds/"
                   xmlns:ns1="http://www.antennahouse.com/AXDServer/2005/Execute/binding">
 <SOAP-ENV:Body>
  <ns1:Login>
   <username>User ID</username>
   <password>Password</password>
  </ns1:Login>
 </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

login レスポンス

loginレスポンスにはログインの結果を表す数値が含まれます。ログイン結果が0であればログインできたことを示します。以下にloginレスポンスのSOAPエンベロープの内容を示します。

<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope/"
                   xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding/"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:ns2="http://www.antennahouse.com/AXDServer/2005/axds/"
                   xmlns:ns1="http://www.antennahouse.com/AXDServer/2005/Execute/binding">
 <SOAP-ENV:Body>
  <ns1:Login>
   <SOAP-RPC:result xmlns:SOAP-RPC="http://www.w3.org/2003/05/soap-rpc">resultcode</SOAP-RPC:result>
   <resultcode>0</resultcode>
  </ns1:Login>
 </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

logout

"logout" は、クライアントとサーバの間のセッションを終了します。logoutを受けつけると、それまでサーバで保持していたスクリプトの実行環境が破棄されます。

logout リクエスト

logoutリクエストにはパラメータはありません。以下にlogoutリクエストのSOAPエンベロープの内容を示します。

<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope/"
                   xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding/"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:ns2="http://www.antennahouse.com/AXDServer/2005/axds/"
                   xmlns:ns1="http://www.antennahouse.com/AXDServer/2005/Execute/binding">
 <SOAP-ENV:Body>
  <ns1:Logout>
  </ns1:Logout>
 </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

logout レスポンス

logoutレスポンスには、ログアウトの結果を表す数値が含まれます。ログアウト結果が0であれば正常にログアウトできたことを示します。以下にlogoutレスポンスのSOAPエンベロープの内容を示します。

<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope/"
                   xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding/"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:ns2="http://www.antennahouse.com/AXDServer/2005/axds/"
                   xmlns:ns1="http://www.antennahouse.com/AXDServer/2005/Execute/binding">
 <SOAP-ENV:Body>
  <ns1:Logout>
   <SOAP-RPC:result xmlns:SOAP-RPC="http://www.w3.org/2003/05/soap-rpc">resultcode</SOAP-RPC:result>
   <resultcode>0</resultcode>
  </ns1:Logout>
 </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

SOAP Fault

SOAP Faultは、SOAPリクエストが何らかの理由により正常に処理できなかったことを表します。SOAP Fault には、失敗の種類を表す fault code、失敗の理由を表す fault reason および失敗の詳細を表す fault detail の情報が含まれます。fault code はプロトコルで規定されている以下のいずれかのコードです。

fault code 説明
VersionMismatch 名前空間が違っている場合など、期待されたEnvelope要素ではない、不正な要素が検出されました。
MustUnderstand 必ず処理しなければならない要素を正常に処理できませんでした。
DataEncodingUnknown サポートしていないエンコーディングデータを検出しました。
Sender メッセージ構造が異常、または不足しています。エラーの詳細はDetail要素に記述されます。
Receiver 上記のいずれにも該当しないが、サーバでのメッセージ処理に失敗しました。エラーの詳細はDetail要素に記述されます。

以下に、SOAP Fault のエンベロープの内容を示します。この例は、サーバでスクリプトの実行中にエラーを検出した例です。

<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope/"
                   xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding/"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                   xmlns:ns2="http://www.antennahouse.com/AXDServer/2005/axds/"
                   xmlns:ns1="http://www.antennahouse.com/AXDServer/2005/Execute/binding">
 <SOAP-ENV:Body>
  <SOAP-ENV:Fault SOAP-ENV:encodinStyle="http://schemas.xmlsoap.org/soap/encoding/">
   <SOAP-ENV:Code>
    <SOAP-ENV:Value>SOAP-ENV:Receiver</SOAP-ENV:Value>
   </SOAP-ENV:Code>
   <SOAP-ENV:Reason>Script terminated with error</SOAP-ENV:Reason>
   <SOAP-ENV:Detail>
    <AxdsfaultDetail xmlns='http://www.antennahouse.com/AXDServer/Fault/'>
###script error at line 17###
SyntaxError: missing ; after for-loop condition
[  for(var i = 0; i  names.length; i++) {
]
    </AxdsFaultDetail>
   </SOAP-ENV:Detail>
  </SOAP-ENV:Fault>
 </SOAP-ENV:Body>
</SOAP-ENV:Envelope>


Copyright © 2005-2016 Antenna House, Inc. All rights reserved.
Antenna House is a trademark of Antenna House, Inc.