PHPでXML-RPCを利用する方法

PHPでXML-RPCを利用する方法

Posted at May 18,2010 1:55 AM
Tag:[MovableType, 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で実装したものです。

PEAR::XML_RPC2のサイト

バージョンのリンクをクリック。これでアーカイブをダウンロードできます。

PEAR::XML_RPC2のダウンロード

ダウンロードしたアーカイブを展開し、中にある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.参考サイト

関連記事
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)