ここの情報は古いです。ご理解頂いた上でお取り扱いください。

Changes between Initial Version and Version 1 of OpenPNEAPI


Ignore:
Timestamp:
Feb 8, 2007, 12:57:04 PM (16 years ago)
Author:
sakai
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • OpenPNEAPI

    v1 v1  
     1 {{{
     2#!html
     3<h1>OpenPNE API 仕様案</h1>
     4
     5<p>最終更新日:2006/05/08 23:03</p>
     6
     7<h2>目次</h2>
     8
     9<ul>
     10<li><a href="#section1">1. OpenPNE API とは?</a></li>
     11<li><a href="#section2">2. 概要</a>
     12  <ul>
     13  <li><a href="#section2-1">2.1. 通信主体</a></li>
     14  <li><a href="#section2-2">2.2. プロトコル</a></li>
     15  <li><a href="#section2-3">2.3. セキュリティ</a></li>
     16
     17  </ul></li>
     18<li><a href="#section3">3. 認証情報の受け渡し</a>
     19  <ul>
     20  <li><a href="#section3-1">3.1. 概要</a>
     21  <li><a href="#section3-2">3.2. セッションIDの生成方法</a>
     22  <li><a href="#section3-3">3.3. メンバートークン</a>
     23  <li><a href="#section3-4">3.4. 外部サーバへのURL</a></li>
     24
     25  <li><a href="#section3-5">3.5. 認証API通信</a></li>
     26  </ul></li>
     27<li><a href="#section4">4. データ取得</a>
     28  <ul>
     29  <li><a href="#section4-1">4.1. コマンドコード</a>
     30  <li><a href="#section4-2">4.2. データ取得例</a>
     31    <ul>
     32
     33    <li><a href="#section4-2-1">4.2.1. メンバー情報取得</a>
     34    </ul></li>
     35  </ul></li>
     36<li><a href="#section5">5. エラーの場合</a>
     37  <ul>
     38  <li><a href="#section5-1">5.1. エラーコード一覧</a></li>
     39  <li><a href="#section5-2">5.2. レスポンス例</a></li>
     40
     41  </ul></li>
     42<li><a href="#section6">6. 参考URL</a>
     43</ul>
     44
     45<hr>
     46
     47<h2 id="section1">1. OpenPNE API とは?</h2>
     48<dl>
     49<dt><strong>OpenPNE API</strong>とは、</dt>
     50<dd>SNSサーバ上にある<strong>認証情報</strong>および<strong>SNSのデータ</strong>を、<strong>外部サーバ</strong>に対してHTTP通信により提供するためのAPIである。</dd>
     51
     52<dt><strong>認証情報</strong>とは、</dt>
     53<dd>SNSサーバでユーザが認証済みである事を示す情報である。</dd>
     54<dt><strong>SNSのデータ</strong>とは、</dt>
     55<dd>OpenPNE SNS側のサーバのデータベースに保存されているデータを指す。
     56例えば、「ニックネーム」「プロフィール写真のURL」「フレンドリスト」などである。</dd>
     57<dt><strong>外部サーバ</strong>とは、<dt>
     58<dd>SNSサーバから<strong>認証情報</strong>と<strong>SNSのデータ</strong>を取得し、SNSとは独立したサービスを提供するサーバである。</dd></dl>
     59
     60<hr>
     61
     62<h2 id="section2">2. 概要</h2>
     63
     64<h3 id="section2-1">2.1. 通信主体</h3>
     65<p>SNSサーバ(APIサーバ) ⇔ 外部サーバ(APIクライアント) 間のサーバ間通信</p>
     66
     67<h3 id="section2-2">2.2. プロトコル</h3>
     68<p>XML-RPCの仕様に準拠。文字コード系はUTF-8とする。</p>
     69
     70<h3 id="section2-3">2.3. セキュリティ</h3>
     71
     72<p>SNSサーバ、外部サーバ間のAPI通信に対しては、SNSサーバ側(OpenPNEアプリケーション)でIP制限を行う</p>
     73
     74<hr>
     75
     76<h2 id="section3">3. 認証情報の受け渡し</h2>
     77
     78<h3 id="section3-1">3.1. 概要</h3>
     79
     80<ol>
     81<li>SNSサーバ側で認証済みのユーザに対して、以下の値を埋め込んだ外部サーバへのリンクを生成する
     82  <ul>
     83  <li>セッションID(後述)</li>
     84
     85  <li>メンバーID</li>
     86  <li>リンク生成日時(YYYYMMDDHHMMSS形式)</li>
     87  </ul></li>
     88<li>外部サーバ側は、受け取ったリクエストをSNSサーバへAPI通信で送る (リンク生成日時が古いものは外部サーバ側で弾いてもよい)</li>
     89<li>SNSサーバ側は、外部サーバから受け取ったリクエストを検証し結果を返す</li>
     90</ol>
     91
     92<h3 id="section3-2">3.2. セッションIDの生成方法</h3>
     93<ul>
     94
     95<li>APIトークン(SNS側の設定ファイで設定した文字列)</li>
     96<li>メンバーID</li>
     97<li>メンバートークン(後述)</li>
     98<li>リンク生成日時(YYYYMMDDHHMMSS形式)</li>
     99</ul>
     100を文字列連結したものをmd5でハッシュ化する。
     101<pre>
     102$session_id = md5($api_token . $c_member_id . $c_member_token . $datetime);
     103</pre>
     104
     105<h3 id="section3-3">3.3. メンバートークン</h3>
     106<p>メンバーに紐付く値で、SNSサーバが保持する。</p>
     107
     108<p>値はメンバーがSNSにログインする毎に変更する。</p>
     109
     110<h3 id="section3-4">3.4. 外部サーバへのURL</h3>
     111
     112<pre>
     113http://app.example.net/entry?<em>sid=b51a44e6a82cc0d6be9ecadea513c618&amp;mid=237&amp;dt=20060326032450</em>
     114</pre>
     115
     116<h3 id="section3-5">3.5. 認証API通信</h3>
     117
     118<h4>リクエスト例</h4>
     119
     120<table>
     121<tr><th>URI</th><td>http://sns.example.com/?m=api&amp;a=do_xmlrpc</td></tr>
     122<tr><th>encoding</th><td>UTF-8</td></tr>
     123<tr><th>methodName</th><td>000_auth</td></tr>
     124<tr><th>parameters</th><td style="padding:0px">
     125  <table style="margin:-1px">
     126
     127  <tr><th>要素名</th><th>型</th><th>説明</th></tr>
     128  <tr><td>sid</td><td>string</td><td>セッションID</td></tr>
     129  <tr><td>mid</td><td>int</td><td>メンバーID</td></tr>
     130  <tr><td>dt</td><td>string</td><td>リンク生成日時(YYYYMMDDHHMMSS形式)</td></tr>
     131
     132  </table>
     133</td></tr>
     134</table>
     135
     136<pre>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
     137&lt;methodCall&gt;
     138&lt;methodName&gt;000_auth&lt;/methodName&gt;
     139
     140&lt;params&gt;
     141&lt;param&gt;
     142&lt;value&gt;&lt;struct&gt;
     143&lt;member&gt;&lt;name&gt;sid&lt;/name&gt;
     144&lt;value&gt;&lt;string&gt;b51a44e6a82cc0d6be9ecadea513c618&lt;/int&gt;&lt;/value&gt;
     145
     146&lt;/member&gt;
     147&lt;member&gt;&lt;name&gt;mid&lt;/name&gt;
     148&lt;value&gt;&lt;int&gt;237&lt;/int&gt;&lt;/value&gt;
     149&lt;/member&gt;
     150&lt;member&gt;&lt;name&gt;dt&lt;/name&gt;
     151
     152&lt;value&gt;&lt;string&gt;20060326032450&lt;/string&gt;&lt;/value&gt;
     153&lt;/member&gt;
     154&lt;/struct&gt;&lt;/value&gt;
     155&lt;/param&gt;
     156&lt;/params&gt;
     157&lt;/methodCall&gt;</pre>
     158
     159<p>PHPコード例</p>
     160
     161<pre>&lt;?php
     162require_once &quot;XML/RPC.php&quot;;
     163...
     164$params = array(
     165    &quot;sid&quot; =&gt; $sid,
     166    &quot;mid&quot; =&gt; intval($mid),
     167    &quot;dt&quot;  =&gt; $dt,
     168);
     169$params = array(XML_RPC_encode($params));
     170$msg = new XML_RPC_Message(&quot;000_auth&quot;, $params);
     171
     172$cli = new XML_RPC_Client(&quot;/?m=api&amp;a=do_xmlrpc&quot;, &quot;sns.example.com&quot;);
     173$cli-&gt;send($msg);
     174...
     175?&gt;</pre>
     176
     177<h4>レスポンス例(成功)</h4>
     178<p>メンバーIDを返す。</p>
     179<pre>
     180&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
     181&lt;methodResponse&gt;
     182  &lt;params&gt;
     183
     184    &lt;param&gt;
     185     &lt;value&gt;&lt;int&gt;32&lt;/int&gt;&lt;/value&gt;
     186    &lt;/param&gt;
     187  &lt;/params&gt;
     188&lt;/methodResponse&gt;</pre>
     189
     190<h4>レスポンス例(失敗)(ユーザが正常登録状態にない場合)</h4>
     191<pre>
     192&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
     193&lt;methodResponse&gt;
     194&lt;fault&gt;
     195  &lt;value&gt;
     196
     197    &lt;struct&gt;
     198      &lt;member&gt;
     199        &lt;name&gt;faultCode&lt;/name&gt;
     200        &lt;value&gt;&lt;int&gt;51&lt;/int&gt;&lt;/value&gt;
     201
     202      &lt;/member&gt;
     203      &lt;member&gt;
     204        &lt;name&gt;faultString&lt;/name&gt;
     205        &lt;value&gt;&lt;string&gt;&lt;/string&gt;&lt;/value&gt;
     206
     207      &lt;/member&gt;
     208    &lt;/struct&gt;
     209  &lt;/value&gt;
     210&lt;/fault&gt;
     211&lt;/methodResponse&gt;</pre>
     212
     213<hr>
     214
     215<h2 id="section4">4. データ取得</h2>
     216
     217<h3 id="section4-1">4.1. メソッド名</h3>
     218
     219<table>
     220<tbody>
     221<tr><th>methodName</th><th>説明</th></tr>
     222<tr><td>1_get_c_member</td><td>メンバー情報取得</td></tr>
     223<tr><td>...</td><td>...</td></tr>
     224</tbody>
     225</table>
     226
     227<h3 id="section4-2">4.2. データ取得例</h3>
     228
     229<h4 id="section4-2-1">4.2.1. メンバー情報取得</h4>
     230
     231<h5>リクエスト </h5>
     232
     233<table>
     234<tr><th>URI</th><td>http://sns.example.com/?m=api&amp;a=do_xmlrpc</td></tr>
     235<tr><th>encoding</th><td>UTF-8</td></tr>
     236
     237<tr><th>methodName</th><td>001_get_c_member</td></tr>
     238<tr><th>parameters</th><td style="padding:0px">
     239  <table style="margin:-1px">
     240  <tr><th>要素名</th><th>型</th><th>説明</th></tr>
     241  <tr><td>target_c_member_id</td><td>int</td><td>取得対象のメンバーID</td></tr>
     242
     243  <tr><td>my_c_member_id</td><td>int</td><td>自分のメンバーID</td></tr>
     244  </table>
     245</td></tr>
     246</table>
     247
     248<h5>リクエスト例</h5>
     249<p>3番のメンバーが10番のメンバーを見た場合</p>
     250
     251<pre>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
     252
     253&lt;methodCall&gt;
     254&lt;methodName&gt;001_get_c_member&lt;/methodName&gt;
     255&lt;params&gt;
     256&lt;param&gt;
     257&lt;value&gt;&lt;struct&gt;
     258&lt;member&gt;&lt;name&gt;target_c_member_id&lt;/name&gt;
     259
     260&lt;value&gt;&lt;int&gt;10&lt;/int&gt;&lt;/value&gt;
     261&lt;/member&gt;
     262&lt;member&gt;&lt;name&gt;my_c_member_id&lt;/name&gt;
     263&lt;value&gt;&lt;int&gt;3&lt;/int&gt;&lt;/value&gt;
     264
     265&lt;/member&gt;
     266&lt;/struct&gt;&lt;/value&gt;
     267&lt;/param&gt;
     268&lt;/params&gt;
     269&lt;/methodCall&gt;</pre>
     270
     271<p>PHPコード例</p>
     272
     273<pre>&lt;?php
     274require_once &quot;XML/RPC.php&quot;;
     275...
     276$params = array(
     277        &quot;target_c_member_id&quot; =&gt; intval($target_c_member_id),
     278        &quot;my_c_member_id&quot; =&gt; intval($my_c_member_id)
     279);
     280$params = array(XML_RPC_encode($params));
     281$msg = new XML_RPC_Message(&quot;001_get_c_member&quot;, $params);
     282
     283$cli = new XML_RPC_Client(&quot;/?m=api&amp;a=do_xmlrpc&quot;, &quot;sns.example.com&quot;);
     284$cli-&gt;send($msg);
     285...
     286?&gt;</pre>
     287
     288<h5>レスポンス</h5>
     289<table>
     290<tbody>
     291<tr><th colspan="2">要素名</th><th>型</th><th>説明</th></tr>
     292<tr><td colspan="2">c_member_id</td><td>int</td><td>メンバーID</td></tr>
     293<tr><td colspan="2">nickname</td><td>string</td><td>ニックネーム</td></tr>
     294
     295<tr><td colspan="2">image_url</td><td>string</td><td>メイン画像URL(SNSサーバ上の画像の絶対パス)</td></tr>
     296<tr><td colspan="2">image_url_1</td><td>string</td><td>画像1URL(SNSサーバ上の画像の絶対パス)</td></tr>
     297<tr><td colspan="2">image_url_2</td><td>string</td><td>画像2URL(SNSサーバ上の画像の絶対パス)</td></tr>
     298<tr><td colspan="2">image_url_3</td><td>string</td><td>画像3URL(SNSサーバ上の画像の絶対パス)</td></tr>
     299<tr><td colspan="2">birth_year</td><td>int</td><td>誕生年(公開設定による)</td></tr>
     300
     301<tr><td colspan="2">birth_month</td><td>int</td><td>誕生月</td></tr>
     302<tr><td colspan="2">birth_day</td><td>int</td><td>誕生日</td></tr>
     303<tr><td colspan="2">access_date</td><td>string(date)</td><td>最終ログイン日時</td></tr>
     304<tr><td colspan="2">r_date</td><td>string(date)</td><td>SNS登録日時</td></tr>
     305<tr><td rowspan="6">profile</td><td colspan=3>---以下プロフィール項目(SNS設定により可変)</td></tr>
     306
     307<tr><td>sex</td><td>string</td><td>性別</td></tr>
     308<tr><td>blood_type</td><td>string</td><td>血液型</td></tr>
     309<tr><td>pre_addr_pref</td><td>string</td><td>現住所(都道府県)</td></tr>
     310<tr><td>old_addr_pref</td><td>string</td><td>出身地(都道府県)</td></tr>
     311<tr><td>self_intro</td><td>string</td><td>自己紹介</td></tr>
     312
     313</tbody>
     314</table>
     315
     316<p>date: YYYYMMDDHHMMSS</p>
     317
     318<h5>レスポンス例</h5>
     319<pre>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
     320&lt;methodResponse&gt;
     321
     322&lt;params&gt;
     323&lt;param&gt;
     324  &lt;value&gt;
     325    &lt;struct&gt;
     326      &lt;member&gt;
     327        &lt;name&gt;c_member_id&lt;/name&gt;
     328
     329        &lt;value&gt;&lt;int&gt;10&lt;/int&gt;&lt;/value&gt;
     330      &lt;/member&gt;
     331      &lt;member&gt;
     332        &lt;name&gt;nickname&lt;/name&gt;
     333
     334        &lt;value&gt;&lt;string&gt;ハチス&lt;/string&gt;&lt;/value&gt;
     335      &lt;/member&gt;
     336      &lt;member&gt;
     337        &lt;name&gt;image_url&lt;/name&gt;
     338
     339        &lt;value&gt;
     340          &lt;string&gt;http://sns.example.com/img.php?filename=m_10_1133710936.jpg&lt;/string&gt;
     341        &lt;/value&gt;
     342      &lt;/member&gt;
     343      &lt;member&gt;
     344
     345        &lt;name&gt;image_url_1&lt;/name&gt;
     346        &lt;value&gt;
     347          &lt;string&gt;http://sns.example.com/img.php?filename=m_10_1133710936.jpg&lt;/string&gt;
     348        &lt;/value&gt;
     349      &lt;/member&gt;
     350
     351      &lt;member&gt;
     352        &lt;name&gt;birth_year&lt;/name&gt;
     353        &lt;value&gt;&lt;int&gt;1982&lt;/int&gt;&lt;/value&gt;
     354      &lt;/member&gt;
     355
     356      &lt;member&gt;
     357        &lt;name&gt;birth_month&lt;/name&gt;
     358        &lt;value&gt;&lt;int&gt;2&lt;/int&gt;&lt;/value&gt;
     359      &lt;/member&gt;
     360
     361      &lt;member&gt;
     362        &lt;name&gt;birth_day&lt;/name&gt;
     363        &lt;value&gt;&lt;int&gt;15&lt;/int&gt;&lt;/value&gt;
     364      &lt;/member&gt;
     365
     366      &lt;member&gt;
     367        &lt;name&gt;access_date&lt;/name&gt;
     368        &lt;value&gt;&lt;string&gt;20060116113706&lt;/string&gt;&lt;/value&gt;
     369      &lt;/member&gt;
     370
     371      &lt;member&gt;
     372        &lt;name&gt;r_date&lt;/name&gt;
     373        &lt;value&gt;&lt;string&gt;20050817000000&lt;/string&gt;&lt;/value&gt;
     374      &lt;/member&gt;
     375
     376      &lt;member&gt;
     377        &lt;name&gt;profile&lt;/name&gt;
     378        &lt;value&gt;
     379          &lt;struct&gt;
     380            &lt;member&gt;
     381
     382              &lt;name&gt;sex&lt;/name&gt;
     383              &lt;value&gt;&lt;string&gt;男性&lt;/string&gt;&lt;/value&gt;
     384            &lt;/member&gt;
     385            &lt;member&gt;
     386
     387              &lt;name&gt;blood_type&lt;/name&gt;
     388              &lt;value&gt;&lt;string&gt;o&lt;/string&gt;&lt;/value&gt;
     389            &lt;/member&gt;
     390            &lt;member&gt;
     391
     392              &lt;name&gt;pre_addr_pref&lt;/name&gt;
     393              &lt;value&gt;&lt;string&gt;東京都&lt;/string&gt;&lt;/value&gt;
     394            &lt;/member&gt;
     395            &lt;member&gt;
     396
     397              &lt;name&gt;old_addr_pref&lt;/name&gt;
     398              &lt;value&gt;&lt;string&gt;埼玉県&lt;/string&gt;&lt;/value&gt;
     399            &lt;/member&gt;
     400            &lt;member&gt;
     401
     402              &lt;name&gt;self_intro&lt;/name&gt;
     403              &lt;value&gt;&lt;string&gt;演劇サークルに入りました。12/14-18に初舞台です。
     404毎日稽古で忙しいです。合間をぬって出社します。&lt;/string&gt;&lt;/value&gt;
     405            &lt;/member&gt;
     406          &lt;/struct&gt;
     407
     408        &lt;/value&gt;
     409      &lt;/member&gt;
     410    &lt;/struct&gt;
     411  &lt;/value&gt;
     412&lt;/param&gt;
     413&lt;/params&gt;
     414&lt;/methodResponse&gt;</pre>
     415
     416<hr>
     417
     418<h2 id="section5">5. エラーの場合</h2>
     419
     420<h3 id="section5-1">5.1. エラーコード一覧</h3>
     421
     422<div class=ie5>
     423<table>
     424<tbody>
     425<tr>
     426<th>種別</th>
     427<th>faultCode</th><th>faultString</th><th>意味</th></tr>
     428
     429<tr>
     430<td rowspan="7">XML-RPC</td>
     431<td>1</td><td>Unknown method</td><td>サーバが関知しないメソッドの実行を要求された際に返されます。</td></tr>
     432<tr>
     433<td>2</td><td>Invalid return payload</td><td>このエラーは、実際のところサーバやコードではなくクライアント側で 発生します。しかし、これはサーバが自分で理解できない何かを返したことを 示します。</td></tr>
     434<tr>
     435<td>3</td><td>Incorrect parameters</td><td>サーバがメソッドに対応したシグネチャを保持しており、クライアントから 渡されたパラメータがいずれのシグネチャにも一致しなかった際に発生します。</td></tr>
     436
     437<tr>
     438<td>4</td><td>Can't introspect: method unknown</td><td>このエラーは、組み込みの system.*() メソッドから 発生するもので、サーバ上で未定義のメソッドを実行しようとした際に起こります。</td></tr>
     439<tr>
     440<td>5</td><td>Didn't receive 200 OK from remote server</td><td>このエラーは、サーバからの応答として HTTP/1.1 200 OK が戻ってこなかった際に クライアント側で発生します。エラーの詳細な情報は、上のメッセージの最後に 付け加えられます。</td></tr>
     441<tr>
     442<td>6</td><td>The requested method didn't return an XML_RPC_Response object.</td><td>&nbsp;</td></tr>
     443<tr>
     444<td>7</td><td>Invalid request payload</td><td>&nbsp;</td></tr>
     445
     446<tr>
     447<td rowspan="9">OpenPNE</td>
     448<td>51</td><td>''</td><td>ユーザが正常登録状態にない</td></tr>
     449<tr>
     450<td>52</td><td>''</td><td>ユーザが特定できない</td></tr>
     451<tr>
     452<td>53</td><td>''</td><td>データベースに接続できない</td></tr>
     453
     454<tr>
     455<td>54</td><td>''</td><td>リクエストコマンドコードが不正</td></tr>
     456<tr>
     457<td>55</td><td>''</td><td>リクエストパラメータに不足がある</td></tr>
     458<tr>
     459<td>56</td><td>''</td><td>データベースに存在しないデータを取得しようとしている</td></tr>
     460<tr>
     461<td>57</td><td>''</td><td>データの取得権限がない</td></tr>
     462
     463<tr>
     464<td>58</td><td>''</td><td>サーバ側不特定エラー、もしくはメンテナンス中</td></tr>
     465<tr>
     466<td>59</td><td>''</td><td>クライアント側不特定エラー</td></tr>
     467<tr>
     468<td rowspan="22">XML</td>
     469<td>100</td><td>?</td><td>XML_ERROR_NONE</td></tr>
     470
     471<tr>
     472<td>101</td><td>?</td><td>XML_ERROR_NO_MEMORY</td></tr>
     473<tr>
     474<td>102</td><td>?</td><td>XML_ERROR_SYNTAX</td></tr>
     475<tr>
     476<td>103</td><td>?</td><td>XML_ERROR_NO_ELEMENTS</td></tr>
     477<tr>
     478<td>104</td><td>?</td><td>XML_ERROR_INVALID_TOKEN</td></tr>
     479
     480<tr>
     481<td>105</td><td>?</td><td>XML_ERROR_UNCLOSED_TOKEN</td></tr>
     482<tr>
     483<td>106</td><td>?</td><td>XML_ERROR_PARTIAL_CHAR</td></tr>
     484<tr>
     485<td>107</td><td>?</td><td>XML_ERROR_TAG_MISMATCH</td></tr>
     486<tr>
     487<td>108</td><td>?</td><td>XML_ERROR_DUPLICATE_ATTRIBUTE</td></tr>
     488
     489<tr>
     490<td>109</td><td>?</td><td>XML_ERROR_JUNK_AFTER_DOC_ELEMENT</td></tr>
     491<tr>
     492<td>110</td><td>?</td><td>XML_ERROR_PARAM_ENTITY_REF</td></tr>
     493<tr>
     494<td>111</td><td>?</td><td>XML_ERROR_UNDEFINED_ENTITY</td></tr>
     495<tr>
     496<td>112</td><td>?</td><td>XML_ERROR_RECURSIVE_ENTITY_REF</td></tr>
     497
     498<tr>
     499<td>113</td><td>?</td><td>XML_ERROR_ASYNC_ENTITY</td></tr>
     500<tr>
     501<td>114</td><td>?</td><td>XML_ERROR_BAD_CHAR_REF</td></tr>
     502<tr>
     503<td>115</td><td>?</td><td>XML_ERROR_BINARY_ENTITY_REF</td></tr>
     504<tr>
     505<td>116</td><td>?</td><td>XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF</td></tr>
     506
     507<tr>
     508<td>117</td><td>?</td><td>XML_ERROR_MISPLACED_XML_PI</td></tr>
     509<tr>
     510<td>118</td><td>?</td><td>XML_ERROR_UNKNOWN_ENCODING</td></tr>
     511<tr>
     512<td>119</td><td>?</td><td>XML_ERROR_INCORRECT_ENCODING</td></tr>
     513<tr>
     514<td>120</td><td>?</td><td>XML_ERROR_UNCLOSED_CDATA_SECTION</td></tr>
     515
     516<tr>
     517<td>121</td><td>?</td><td>XML_ERROR_EXTERNAL_ENTITY_HANDLING</td></tr></tbody>
     518</table>
     519</div>
     520
     521<h3 id="section5-2">5.2. レスポンス例</h3>
     522<p>リクエストパラメータに不足がある場合</p>
     523<pre>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
     524
     525&lt;methodResponse&gt;
     526&lt;fault&gt;
     527  &lt;value&gt;
     528    &lt;struct&gt;
     529      &lt;member&gt;
     530        &lt;name&gt;faultCode&lt;/name&gt;
     531
     532        &lt;value&gt;&lt;int&gt;3&lt;/int&gt;&lt;/value&gt;
     533      &lt;/member&gt;
     534      &lt;member&gt;
     535        &lt;name&gt;faultString&lt;/name&gt;
     536
     537        &lt;value&gt;&lt;string&gt;Incorrect parameters passed to method: Signature permits 1 parameters but the request had 0&lt;/string&gt;&lt;/value&gt;
     538      &lt;/member&gt;
     539    &lt;/struct&gt;
     540  &lt;/value&gt;
     541&lt;/fault&gt;
     542
     543&lt;/methodResponse&gt;</pre>
     544
     545<hr>
     546
     547<h2 id="section6">6. 参考URL</h2>
     548<ul>
     549<li>XML-RPC Specification <a href="http://www.xmlrpc.com/spec">http://www.xmlrpc.com/spec</a>
     550<li>同日本語版 <a href="http://lowlife.jp/yasusii/stories/9.html">http://lowlife.jp/yasusii/stories/9.html</a>
     551<li>PEAR::XML_RPC <a href="http://pear.php.net/manual/ja/package.webservices.xml-rpc.php">http://pear.php.net/manual/ja/package.webservices.xml-rpc.php</a></li>
     552
     553</ul>
     554}}