|
Tue, Jun 15, 1999; by Dave Winer. Japanese translation Sun, May 9, 2003; by Yasushi Iwata Japanese translation Updated Tue, Jul 29, 2003; by Yasushi Iwata この仕様書は UserLand Frontier 5.1 に実装されている XML-RPC プロトコルについて述べたものです。 非技術者の向けの解説は XML-RPC for Newbies に書かれています。 このページには XML-RPC を実装するにあたって必要な内容のすべてが書かれています。 概要XML-RPC はインターネット上でリモートプロシージャコールを実行するためのプロトコルです。 XML-RPC メッセージは HTTP-POST リクエストで、リクエストの body は XML です。プロシージャはサーバ側で実行され、その結果もまた XML 形式で返されます。 プロシージャのパラメータにはスカラー値、数値、文字列、日付等のほか、複合的なレコード/リスト構造で指定することができます。 リクエストの例XML-RPC のリクエストは、たとえば次のようなものです。
POST /RPC2 HTTP/1.0
User-Agent: Frontier/5.1.2 (WinNT)
Host: betty.userland.com
Content-Type: text/xml
Content-length: 181
<?xml version="1.0"?>
<methodCall>
<methodName>examples.getStateName</methodName>
<params>
<param>
<value><i4>41</i4></value>
</param>
</params>
</methodCall>
ヘッダに必要な内容ヘッダ最初の行の URI は特に規定していません。サーバ側が XML-RPC コールを処理できるのであれば、URI が指定されていなかったり、単に / となっていてもかまいません。しかし、サーバが XML-RPC 以外の HTTP リクエストも処理している場合、XML-RPC のコードを呼び出すための URI を指定することも可能です(例では URI が /RPC2 となっており、サーバに RPC2 という名前に対応するリクエストとして処理するよう告げています)。 User-Agent と Host は必ず指定しなければなりません。 Content-Type は text/xml です。 Content-Length も必須で正しい値を指定しなければなりません。 ペイロードのフォーマットペイロード(データ本体)は XML であり、単一の <methodCall> で構成されます。 <methodCall> は呼出すべきメソッド名の文字列をデータとして持つ副要素 <methodName> を含んでいなければなりません。使用できる文字はアルファベットの大文字と小文字、数字、アンダースコア、ドット、コロンおよびスラッシュです。mehodName にどんな文字列を指定すると、どのような内容が実行されるかは、サーバアプリケーションに依存します。 たとえば methodName はリクエストによって実行されるスクリプトのファイル名かもしれません。データベーステーブルのセル名かもしれません。あるいは、ファイルシステム上の特定のファイルのパス名かもしれません。 プロシージャコールにパラメータがある場合、<methodCall> は副要素 <params> を含んでいなければなりません。<params> はさらに複数の <param> 含み、各 <param> はそれぞれ単一の <value> を含みます。 <value> のスカラー値<value> にはスカラー値を指定できます。その型は次の表にあるように、型を示すタグで囲んで指定します。
型の指定がない場合は string として扱われます。 <struct>型の指定には <struct> を使うこともできます。 <struct> は複数の <member> を含み、各 <member> は <name> と <value> を1個づつ含みます。以下は2つの要素を持つ <struct> の例です。
<struct>
<member>
<name>lowerBound</name>
<value><i4>18</i4></value>
</member>
<member>
<name>upperBound</name>
<value><i4>139</i4></value>
</member>
</struct>
<struct> は再帰的な定義も可能で、<value> には <struct> や次に述べる <array> など、どのような型でも指定できます。 <array>value の型には <array> を指定することもできます。 <array> は複数の <value> を含む1つの <data> 要素を含みます。 以下は4つの要素を持つ array の例です。
<array>
<data>
<value><i4>12</i4></value>
<value><string>Egypt</string></value>
<value><boolean>0</boolean></value>
<value><i4>-31</i4></value>
</data>
</array>
<array> 要素は名前を持ちません。 上に示したように、複数の型をミックスして用いることができます。 <arrays> は再帰的な定義が可能で、 value には <array> や先に解説した <struct> など、どんな型でも指定できます。 レスポンスの例XML-RPC リクエストに対するレスポンスの例を以下に示します。
HTTP/1.1 200 OK
Connection: close
Content-Length: 158
Content-Type: text/xml
Date: Fri, 17 Jul 1998 19:55:08 GMT
Server: UserLand Frontier/5.1.2-WinNT
<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value><string>South Dakota</string></value>
</param>
</params>
</methodResponse>
レスポンスのフォーマットXML-RPC より下のレベルでエラーが発生しない限り、常に 200 OK を返します。 Content-Type は text/xml です。Content-Length も必須で正しい値を返さなければなりません。 レスポンスの body は単一の XML で、単一の <methodResponse> から成ります。<methodResponse> は単一の <params> を含むことが可能で、<params> は単一の <param> を含み、<param> は単一の <value> を含みます。 <methodResponse> には単一の <fault> を含ませることも可能です。<fault> は単一の <value> を含み、その <value> は単一の <struct> を含み、<struct> は2つの要素 <faultCode> と <faultString> を含みます。<faultCode> の型は <int> で、<faultString> の型は <string> です。 <methodResponse> に <fault> と <params> の両方を含ませることはできません。 Fault の例
HTTP/1.1 200 OK
Connection: close
Content-Length: 426
Content-Type: text/xml
Date: Fri, 17 Jul 1998 19:55:02 GMT
Server: UserLand Frontier/5.1.2-WinNT
<?xml version="1.0"?>
<methodResponse>
<fault>
<value>
<struct>
<member>
<name>faultCode</name>
<value><int>4</int></value>
</member>
<member>
<name>faultString</name>
<value><string>Too many parameters.</string></value>
</member>
</struct>
</value>
</fault>
</methodResponse>
方針と目標
Updated 1/21/99 DWPython で XML-RPC を実装するにあたっての次の質問が UserLand の掲示板に出されました。
追加
文字列の定義から "ASCII" を削除。 以下の著作権表示で 1998-99 となっていた部分を 1999-2003 に変更。 著作権と免責事項© Copyright 1999-2003 UserLand Software. All Rights Reserved. This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and these paragraphs are included on all such copies and derivative works. This document may not be modified in any way, such as by removing the copyright notice or references to UserLand or other organizations. Further, while these copyright restrictions apply to the written XML-RPC specification, no claim of ownership is made by UserLand to the protocol it describes. Any party may, for commercial or non-commercial purposes, implement this protocol without royalty or license fee to UserLand. The limited permissions granted herein are perpetual and will not be revoked by UserLand or its successors or assigns. This document and the information contained herein is provided on an "AS IS" basis and USERLAND DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 最終更新 2003-08-14 23:10:08 |
XML-RPC Specification の日本語訳。
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
© 2003-2010, Yasushi Iwata