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

Changes between Version 2 and Version 3 of OpenPNEAPI


Ignore:
Timestamp:
Feb 8, 2007, 4:08:42 PM (13 years ago)
Author:
sakai
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • OpenPNEAPI

    v2 v3  
    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 
     1= OpenPNE API 仕様案 =
     2
     3最終更新日:2006/05/08 23:03
     4
     5== 目次 ==
     6
     7 * [http://trac.openpne.jp/wiki/OpenPNEAPI#section1 1. OpenPNE API とは?]
     8 * [http://trac.openpne.jp/wiki/OpenPNEAPI#section2 2. 概要]
     9   * [http://trac.openpne.jp/wiki/OpenPNEAPI#section2-1 2.1. 通信主体]
     10   * [http://trac.openpne.jp/wiki/OpenPNEAPI#section2-2 2.2. プロトコル]
     11   * [http://trac.openpne.jp/wiki/OpenPNEAPI#section2-3 2.3. セキュリティ]
     12 * [http://trac.openpne.jp/wiki/OpenPNEAPI#section3 3. 認証情報の受け渡し]
     13   * [http://trac.openpne.jp/wiki/OpenPNEAPI#section3-1 3.1. 概要]
     14   * [http://trac.openpne.jp/wiki/OpenPNEAPI#section3-2 3.2. セッションIDの生成方法]
     15   * [http://trac.openpne.jp/wiki/OpenPNEAPI#section3-3 3.3. メンバートークン]
     16   * [http://trac.openpne.jp/wiki/OpenPNEAPI#section3-4 3.4. 外部サーバへのURL]
     17   * [http://trac.openpne.jp/wiki/OpenPNEAPI#section3-5 3.5. 認証API通信]
     18 * [http://trac.openpne.jp/wiki/OpenPNEAPI#section4 4. データ取得]
     19   * [http://trac.openpne.jp/wiki/OpenPNEAPI#section4-1 4.1. コマンドコード]
     20   * [http://trac.openpne.jp/wiki/OpenPNEAPI#section4-2 4.2. データ取得例]
     21     * [http://trac.openpne.jp/wiki/OpenPNEAPI#section4-2-1 4.2.1. メンバー情報取得]
     22 * [http://trac.openpne.jp/wiki/OpenPNEAPI#section5 5. エラーの場合]
     23   * [http://trac.openpne.jp/wiki/OpenPNEAPI#section5-1 5.1. エラーコード一覧]
     24   * [http://trac.openpne.jp/wiki/OpenPNEAPI#section5-2 5.2. レスポンス例]
     25 * [http://trac.openpne.jp/wiki/OpenPNEAPI#section6 6. 参考URL]
     26
     27-----
     28{{{
     29#!html
    4730<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 
     31}}}
     32
     33 '''OpenPNE API'''とは、::
     34   SNSサーバ上にある'''認証情報'''および'''SNSのデータ'''を、'''外部サーバ'''に対してHTTP通信により提供するためのAPIである。
     35
     36 '''認証情報'''とは、::
     37   SNSサーバでユーザが認証済みである事を示す情報である。
     38
     39 '''SNSのデータ'''とは、::
     40   OpenPNE SNS側のサーバのデータベースに保存されているデータを指す。 [[br]]
     41例えば、「ニックネーム」「プロフィール写真のURL」「フレンドリスト」などである。
     42
     43 '''外部サーバ'''とは、::
     44   SNSサーバから'''認証情報'''と'''SNSのデータ'''を取得し、SNSとは独立したサービスを提供するサーバである。
     45
     46-----
     47
     48 {{{
     49#!html
    6250<h2 id="section2">2. 概要</h2>
    6351
    6452<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 
     53 }}}
     54
     55SNSサーバ(APIサーバ) ⇔ 外部サーバ(APIクライアント) 間のサーバ間通信
     56
     57 {{{
     58#!html
     59 <h3 id="section2-2">2.2. プロトコル</h3>
     60 }}}
     61
     62XML-RPCの仕様に準拠。文字コード系はUTF-8とする。
     63
     64 {{{
     65#!html
    7066<h3 id="section2-3">2.3. セキュリティ</h3>
    71 
    72 <p>SNSサーバ、外部サーバ間のAPI通信に対しては、SNSサーバ側(OpenPNEアプリケーション)でIP制限を行う</p>
    73 
    74 <hr>
    75 
     67 }}}
     68
     69SNSサーバ、外部サーバ間のAPI通信に対しては、SNSサーバ側(OpenPNEアプリケーション)でIP制限を行う
     70
     71-----
     72
     73{{{
     74#!html
    7675<h2 id="section3">3. 認証情報の受け渡し</h2>
    7776
    7877<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 
     78 }}}
     79
     80
     81 1.  SNSサーバ側で認証済みのユーザに対して、以下の値を埋め込んだ外部サーバへのリンクを生成する
     82   * セッションID(後述)
     83   * メンバーID
     84   * リンク生成日時(YYYYMMDDHHMMSS形式)
     85 1. 外部サーバ側は、受け取ったリクエストをSNSサーバへAPI通信で送る (リンク生成日時が古いものは外部サーバ側で弾いてもよい)
     86 1. SNSサーバ側は、外部サーバから受け取ったリクエストを検証し結果を返す
     87
     88 {{{
     89#!html
    9290<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>
     91 }}}
     92
     93 * APIトークン(SNS側の設定ファイで設定した文字列)
     94 * メンバーID
     95 * メンバートークン(後述)
     96 * リンク生成日時(YYYYMMDDHHMMSS形式)
     97
     98
    10099を文字列連結したものをmd5でハッシュ化する。
    101 <pre>
     100 {{{
     101#!php
    102102$session_id = md5($api_token . $c_member_id . $c_member_token . $datetime);
    103 </pre>
    104 
     103}}}
     104
     105 {{{
     106#!html
    105107<h3 id="section3-3">3.3. メンバートークン</h3>
    106 <p>メンバーに紐付く値で、SNSサーバが保持する。</p>
    107 
    108 <p>値はメンバーがSNSにログインする毎に変更する。</p>
    109 
     108}}}
     109
     110メンバーに紐付く値で、SNSサーバが保持する。
     111
     112値はメンバーがSNSにログインする毎に変更する。
     113
     114 {{{
     115#!html
    110116<h3 id="section3-4">3.4. 外部サーバへのURL</h3>
    111 
    112 <pre>
    113 http://app.example.net/entry?<em>sid=b51a44e6a82cc0d6be9ecadea513c618&amp;mid=237&amp;dt=20060326032450</em>
    114 </pre>
    115 
     117 }}}
     118
     119{{{
     120http://app.example.net/entry?sid=b51a44e6a82cc0d6be9ecadea513c618&amp;mid=237&amp;dt=20060326032450
     121}}}
     122
     123 {{{
     124#!html
    116125<h3 id="section3-5">3.5. 認証API通信</h3>
    117 
    118 <h4>リクエスト例</h4>
    119 
    120 <table>
     126 }}}
     127
     128=== リクエスト例 ===
     129
     130 {{{
     131#!html
     132
     133<table style="border:1px solid #666666;">
    121134<tr><th>URI</th><td>http://sns.example.com/?m=api&amp;a=do_xmlrpc</td></tr>
    122135<tr><th>encoding</th><td>UTF-8</td></tr>
    123136<tr><th>methodName</th><td>000_auth</td></tr>
    124137<tr><th>parameters</th><td style="padding:0px">
    125   <table style="margin:-1px">
     138  <table style="margin:-1px;">
    126139
    127140  <tr><th>要素名</th><th>型</th><th>説明</th></tr>
     
    133146</td></tr>
    134147</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>
     148 }}}
     149
     150 {{{
     151#!xml
     152<?xml version="1.0" encoding="UTF-8"?>
     153<methodCall>
     154<methodName>000_auth</methodName>
     155
     156<params>
     157<param>
     158<value><struct>
     159<member><name>sid</name>
     160<value><string>b51a44e6a82cc0d6be9ecadea513c618</int></value>
     161
     162</member>
     163<member><name>mid</name>
     164<value><int>237</int></value>
     165</member>
     166<member><name>dt</name>
     167
     168<value><string>20060326032450</string></value>
     169</member>
     170</struct></value>
     171</param>
     172</params>
     173</methodCall>
     174 }}}
    158175
    159176<p>PHPコード例</p>
    160177
    161 <pre>&lt;?php
    162 require_once &quot;XML/RPC.php&quot;;
     178 {{{
     179#!php
     180<?php
     181require_once "XML/RPC.php";
    163182...
    164183$params = array(
    165     &quot;sid&quot; =&gt; $sid,
    166     &quot;mid&quot; =&gt; intval($mid),
    167     &quot;dt&quot;  =&gt; $dt,
     184    "sid" => $sid,
     185    "mid" => intval($mid),
     186    "dt"  => $dt,
    168187);
    169188$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);
     189$msg = new XML_RPC_Message("000_auth", $params);
     190
     191$cli = new XML_RPC_Client("/?m=api&amp;a=do_xmlrpc", "sns.example.com");
     192$cli->send($msg);
    174193...
    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 
     194?>
     195}}}
     196
     197
     198=== レスポンス例(成功) ===
     199メンバーIDを返す。
     200
     201 {{{
     202#!xml
     203<?xml version="1.0" encoding="UTF-8"?>
     204<methodResponse>
     205  <params>
     206
     207    <param>
     208     <value><int>32</int></value>
     209    </param>
     210  </params>
     211</methodResponse>
     212 }}}
     213
     214=== レスポンス例(失敗)(ユーザが正常登録状態にない場合) ===
     215 {{{
     216#!xml
     217<?xml version="1.0" encoding="UTF-8"?>
     218<methodResponse>
     219<fault>
     220  <value>
     221
     222    <struct>
     223      <member>
     224        <name>faultCode</name>
     225        <value><int>51</int></value>
     226
     227      </member>
     228      <member>
     229        <name>faultString</name>
     230        <value><string></string></value>
     231
     232      </member>
     233    </struct>
     234  </value>
     235</fault>
     236</methodResponse>
     237 }}}
     238
     239-----
     240
     241{{{
     242#!html
    215243<h2 id="section4">4. データ取得</h2>
    216244
    217245<h3 id="section4-1">4.1. メソッド名</h3>
    218246
    219 <table>
     247<table style="border:1px solid #666666;">
    220248<tbody>
    221249<tr><th>methodName</th><th>説明</th></tr>
     
    231259<h5>リクエスト </h5>
    232260
    233 <table>
     261<table style="border:1px solid #666666;">
    234262<tr><th>URI</th><td>http://sns.example.com/?m=api&amp;a=do_xmlrpc</td></tr>
    235263<tr><th>encoding</th><td>UTF-8</td></tr>
     
    247275
    248276<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
    274 require_once &quot;XML/RPC.php&quot;;
     277}}}
     2783番のメンバーが10番のメンバーを見た場合
     279
     280{{{
     281#!xml
     282<?xml version="1.0" encoding="UTF-8"?>
     283
     284<methodCall>
     285<methodName>001_get_c_member</methodName>
     286<params>
     287<param>
     288<value><struct>
     289<member><name>target_c_member_id</name>
     290
     291<value><int>10</int></value>
     292</member>
     293<member><name>my_c_member_id</name>
     294<value><int>3</int></value>
     295
     296</member>
     297</struct></value>
     298</param>
     299</params>
     300</methodCall>
     301 }}}
     302
     303PHPコード例
     304
     305 {{{
     306#!php
     307<?php
     308require_once "XML/RPC.php";
    275309...
    276310$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)
     311        "target_c_member_id" => intval($target_c_member_id),
     312        "my_c_member_id" => intval($my_c_member_id)
    279313);
    280314$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);
     315$msg = new XML_RPC_Message("001_get_c_member", $params);
     316
     317$cli = new XML_RPC_Client("/?m=api&amp;a=do_xmlrpc", "sns.example.com");
     318$cli->send($msg);
    285319...
    286 ?&gt;</pre>
    287 
     320?>
     321 }}}
     322
     323{{{
     324#!html
    288325<h5>レスポンス</h5>
    289 <table>
     326<table style="border:1px solid #666666;">
    290327<tbody>
    291328<tr><th colspan="2">要素名</th><th>型</th><th>説明</th></tr>
     
    313350</tbody>
    314351</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 
     352 }}}
     353
     354date: YYYYMMDDHHMMSS
     355
     356=== レスポンス例 ===
     357 {{{
     358#!xml
     359<?xml version="1.0" encoding="UTF-8"?>
     360<methodResponse>
     361
     362<params>
     363<param>
     364  <value>
     365    <struct>
     366      <member>
     367        <name>c_member_id</name>
     368
     369        <value><int>10</int></value>
     370      </member>
     371      <member>
     372        <name>nickname</name>
     373
     374        <value><string>ハチス</string></value>
     375      </member>
     376      <member>
     377        <name>image_url</name>
     378
     379        <value>
     380          <string>http://sns.example.com/img.php?filename=m_10_1133710936.jpg</string>
     381        </value>
     382      </member>
     383      <member>
     384
     385        <name>image_url_1</name>
     386        <value>
     387          <string>http://sns.example.com/img.php?filename=m_10_1133710936.jpg</string>
     388        </value>
     389      </member>
     390
     391      <member>
     392        <name>birth_year</name>
     393        <value><int>1982</int></value>
     394      </member>
     395
     396      <member>
     397        <name>birth_month</name>
     398        <value><int>2</int></value>
     399      </member>
     400
     401      <member>
     402        <name>birth_day</name>
     403        <value><int>15</int></value>
     404      </member>
     405
     406      <member>
     407        <name>access_date</name>
     408        <value><string>20060116113706</string></value>
     409      </member>
     410
     411      <member>
     412        <name>r_date</name>
     413        <value><string>20050817000000</string></value>
     414      </member>
     415
     416      <member>
     417        <name>profile</name>
     418        <value>
     419          <struct>
     420            <member>
     421
     422              <name>sex</name>
     423              <value><string>男性</string></value>
     424            </member>
     425            <member>
     426
     427              <name>blood_type</name>
     428              <value><string>o</string></value>
     429            </member>
     430            <member>
     431
     432              <name>pre_addr_pref</name>
     433              <value><string>東京都</string></value>
     434            </member>
     435            <member>
     436
     437              <name>old_addr_pref</name>
     438              <value><string>埼玉県</string></value>
     439            </member>
     440            <member>
     441
     442              <name>self_intro</name>
     443              <value><string>演劇サークルに入りました。12/14-18に初舞台です。
     444毎日稽古で忙しいです。合間をぬって出社します。</string></value>
     445            </member>
     446          </struct>
     447
     448        </value>
     449      </member>
     450    </struct>
     451  </value>
     452</param>
     453</params>
     454</methodResponse>
     455 }}}
     456
     457-----
     458
     459{{{
     460#!html
    418461<h2 id="section5">5. エラーの場合</h2>
    419462
    420463<h3 id="section5-1">5.1. エラーコード一覧</h3>
    421464
    422 <div class=ie5>
    423 <table>
     465<table style="border:1px solid #666666;">
    424466<tbody>
    425467<tr>
     
    517559<td>121</td><td>?</td><td>XML_ERROR_EXTERNAL_ENTITY_HANDLING</td></tr></tbody>
    518560</table>
    519 </div>
    520561
    521562<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 
     563}}}
     564
     565リクエストパラメータに不足がある場合
     566
     567{{{
     568#!xml
     569<?xml version="1.0" encoding="UTF-8"?>
     570
     571<methodResponse>
     572<fault>
     573  <value>
     574    <struct>
     575      <member>
     576        <name>faultCode</name>
     577
     578        <value><int>3</int></value>
     579      </member>
     580      <member>
     581        <name>faultString</name>
     582
     583        <value><string>Incorrect parameters passed to method: Signature permits 1 parameters but the request had 0</string></value>
     584      </member>
     585    </struct>
     586  </value>
     587</fault>
     588
     589</methodResponse>
     590}}}
     591
     592-----
     593{{{
     594#!html
    547595<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 }}}
     596}}}
     597
     598 * XML-RPC Specification http://www.xmlrpc.com/spec/
     599 * 同日本語版 http://lowlife.jp/yasusii/stories/9.html
     600 * PEAR::XML_RPC
     601
     602[wiki:OpenPNEAPI 上に戻る]