PHPでXML-RPCを利用する方法
PHPでXML-RPCを利用する方法を紹介します。ここではMovable TypeのXML-RPCを起動するサンプルを示しますが、他のXML-RPCにも応用できると思います。
このエントリーで紹介する方法ではPHP5が必要です。
1.PEAR::XML_RPC2のインストール
PEAR::XML_RPC2のサイトで「Download」をクリック。PEARとはPHPのクラスライブラリ集で、「PHP Extension and Application Repository」の略です。PEAR::XML_RPC2は、XML-RPCプロトコルをPHP5で実装したものです。
バージョンのリンクをクリック。これでアーカイブをダウンロードできます。
ダウンロードしたアーカイブを展開し、中にあるXMLフォルダを任意のフォルダに配置します。ここではアプリケーションディレクトリに配置します。
なお、XAMPPにはC:\xampp\php\PEAR\XMLがあるので、そこにXMLフォルダを配置しても良いでしょう。最新のXAMPPにはもしかしたらバンドルされているかもしれません。
2.cURL拡張モジュールを有効にする
PEAR::XML_RPC2ではcURL拡張モジュール(php_curl.dll)が必要です。XAMPPの場合、php_curl.dllはC:\xampp\php\extにバンドルされているので、php.iniを修正して拡張モジュールを有効にするだけです。php.iniのパスはC:\xampp\apache\binになります。
修正方法は簡単で、
;extension=php_curl.dll
の先頭の「;」を削除して、
extension=php_curl.dll
とするだけです。修正後、XAMPPを再起動してください。再起動しないと設定が反映されません。
3.サンプルコード
XML-RPCのサンプルコードを以下に示します。サンプルはmetaWeblog.getPostを起動するものなので、他のAPIを起動する場合は、パラメータとAPI名を適宜変更してください。
<html>
<head>
<title>XML-RPC Client</title>
</head>
<body>
<h1>XML-RPC Client</h1>
<?php
require_once("./XML/RPC2/Client.php");
// metaWeblog.getPostのサンプル
$prefix = 'metaWeblog.'; // プレフィックス
$encoding = 'utf-8'; // 文字エンコーディング
$uri = 'http://localhost/mt/mt-xmlrpc.cgi'; // mt-xmlrpc.cgiのURI
$options = array('prefix' => $prefix, 'encoding' => $encoding);
$client = XML_RPC2_Client::create($uri, $options); // XML-RPXクライアントの生成
$entry_id = 1; // ブログ記事ID
$user = 'foo'; // ウェブサービスのユーザー名
$pass = 'hogehoge'; // ウェブサービスのパスワード
try {
$result = $client->getPost($entry_id, $user, $pass); // API起動
} catch (XML_RPC2_FaultException $e) {
var_dump($e);
} catch (Exception $e) {
var_dump($e);
}
?>
<h2><a href="<?php echo $result["permaLink"]; ?>"><?php echo $result["title"]; ?></a></h2>
<div><?php echo $result["description"]; ?></div>
</body>
</html>
返却結果をすべて出力したい場合は、
<h2><a href="<?php echo $result["permaLink"]; ?>"><?php echo $result["title"]; ?></a></h2>
<div><?php echo $result["description"]; ?></div>
の代わりに、
<?php var_dump($result); ?>
を記述すると良いでしょう。
4.参考サイト
- BPS株式会社 開発ブログ - XML-RPC
- Windows 用 PHP 拡張モジュール
- XAMPPでcurlやopensslなどのPHPエクステンションを有効にする方法
- PHPを用いたXML-RPCの基礎