XML-RPCとWordPress

 ブログ用のアプリを作ったりする際に、ブログとアプリの連携が欠かせません。例えば、MarsEditというブログエディタがその例です。ブログとアプリの連携にはXML-RPCという仕組みを使用します。ここではこのXML-RPCについて説明します。

XML-RPCとは

 XML-RPCはデータ形式にXMLを使用し、HTMLで通信をするプロトコルのことです。以下にXML-RPCの仕様書へのリンクを載せます。XML-RPCの詳細はこちらで調べてください。

XML-RPC仕様書

XML-RPCの使い方(WordPress)

 XML-RPCでは、HTMLのPOSTをサイトのPHPファイルへ送り連携します。WordPressの場合はhttp://サイトドメイン名/xmlrpc.phpになります。XML-RPCのリクエストは以下の様な構造になっています。

POST http://XXX.com/xmlrpc.php HTTP/1.0
User-Agent: エージェント名
Host: XXX.com
Content-Type: text/xml
Content-length: YYY

メッセージ

XXX.comはホスト名になります。エージェント名は好きにつければいいと思います。YYYはコンテントの長さでメッセージの文字数を指定します(文字はchar型です。よって、半角スペースは1文字、改行「¥r¥n」は2文字です)。送るメッセージは以下のような構造になっています。

<methodCall>
<methodName>命令名</methodName>
<params>
<param><value>入力値1</value></param>
<param><value>入力値2</value></param>
</params>
</methodCall>

 methodNameには命令名を入れます。例えば、WordPressには以下の様な命令のAPIがあるので参考にしてください。

XML-RPC WordPress API

例えば、命令名としてはwp.getUsersBlogsなどがあります。入力値には命令に則した入力をいれます。wp.getUsersBlogsなら

<methodCall>
<methodName>wp.getUsersBlogs</methodName>
<params>
<param><value><string>ユーザー名</string></value></param>
<param><value><string>パスワード</string></value></param>
</params>
</methodCall>

となります。ユーザー名とパスワードはWordPressへログインする際の値になります。入力するパラメタの順番はWordPress APIにかかれた順番です。そして、valueでの型は

タグ 意味
<i4>,<int> 整数
<boolean> 0か1
<string> 文字
<double> 実数
<dateTime.iso8601> 日付と時刻
<base64> base64でエンコードされたバイナリ

などのデータ型があります。これらの値もWordPress APIを見て決めます。

受け取るデータ

 以上のようなPOST入力をサーバーにすると以下のようにデータが返ってきます。

<?xml version="1.0" encoding="UTF-8" ?>
<methodResponse>
<params>
<param>
<value>
<array>
<data>
<value>
 <struct>
 <member>
<name>isAdmin</name>
<value>
<boolean>0 or 1</boolean>
</value>
 </member>
 <member>
<name>url</name>
<value>
<string>ブログURL</string>
</value>
 </member>
 <member>
<name>blogid</name>
<value>
<string>ブログID</string>
</value>
 </member>
 <member>
<name>blogName</name>
<value>
<string>ブログ名</string>
</value>
 </member>
 <member>
<name>xmlrpc</name>
<value>
<string>http:ドメイン名/xmlrpc.php</string>
</value>
 </member>
 </struct>
</value>
</data>
</array>
</value>
</param>
</params>
</methodResponse>

APIに乗っているような出力がXML形式で取得できるわけです。あとはこのデータを解析してプログラムを組めばいいことになります。

著者:安井 真人(やすい まさと)