XML-RPCとWordPress
2015年2月28日:WordPress
ブログ用のアプリを作ったりする際に、ブログとアプリの連携が欠かせません。例えば、MarsEditというブログエディタがその例です。ブログとアプリの連携にはXML-RPCという仕組みを使用します。ここではこのXML-RPCについて説明します。
XML-RPCとは
XML-RPCはデータ形式にXMLを使用し、HTMLで通信をするプロトコルのことです。以下に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があるので参考にしてください。
例えば、命令名としては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形式で取得できるわけです。あとはこのデータを解析してプログラムを組めばいいことになります。
著者:安井 真人(やすい まさと)
@yasui_masatoさんをフォロー