« となりのトトロ | メイン | 合掌 »

2006年07月29日

Movable TypeがサポートするXML-RPCメソッドを取得する

多くのブログは、XML-RPCというWebサービスのインターフェースを持っています。
Webサービスは、いまはやりのWeb2.0の代表選手で、Webサービスのインターフェースを公開しているインターフェースに対して要求を投げると、その要求に対して返答を返してくれるというものです。
ブログもそのインターフェースを持っています。ブログの記事を投稿できるインターフェースとか、登録されているカテゴリの一覧を取得できるインターフェースなどです。例えば、記事投稿インターフェースに対して、記事にしたい内容を渡すと、あたかも画面で内容を執筆して投稿したかのようにブログを投稿することができます。

僕が担当しているプロダクトもSOAPというXML-RPCを元に作られたWebサービスのインターフェースを持っています。なんで、Webサービスの理解は重要なんですが、SOAPっていうのはコーディングがなかなか難しいので、XML-RPCから始めてみたいと思います。

今回は、Movable TypeがサポートするXML-RPCメソッドをとってくるPHPプログラムを御紹介します。

【事前準備】
Edd Dumbill氏によって開発されたXML-RPCライブラリを使用します。
http://phpxmlrpc.sourceforge.net/からダウンロードしたライブラリを解凍すると、xmlrpc.incというファイルとxmlrpcs.incというファイルがありますので、それをphp.iniのinclude_pathで指定した場所に置いておきます。

PHPをソースからインストールした場合、php.iniは/usr/local/lib配下にあるようです。
見付からなければ、locateコマンド等で探しましょう。

【XML-RPCメソッドをとってくるPHPプログラムソース】

以下のプログラムは、mt.supportedMethodsというXML-RPCメソッドを使って、Movable TypeのXML-RPCにて使えるメソッドを一覧をXML形式でとってくるものです。


<?php

//(1)ライブラリのインクルード
//include_pathに置いたxmlrpc.incをincludeします。

include 'xmlrpc.inc';

$xmlrpc_internalencoding = 'UTF-8';

//$server_pathには$server_hostからmt-xmlrpc.cgiまでのパスを書きます。
//以下の例の場合、mt-xmlrpc.cgiはhttp://www.example.com/blog/mt-xmlrpc.cgi

$server_path = '/blog/mt-xmlrpc.cgi';
$server_host = 'www.example.com';
$server_port = '80';

//(2) XMLRPCクライアントの作成
$server = new xmlrpc_client($server_path,$server_host,$server_port);

//(3)リクエストメッセージの作成
//xmlrpcmsgの第一引数に、mt.supportedMethodsを指定します。
//Movable Typeのマニュアルに、XML-RPC のマニュアルがあり、
//そこに使用できるメソッド一覧が記載されています。
//mt.supportedMethodsメソッドは、入力パラメータは不要ですが、パラメータがない場合も
//配列の形で渡してあげないといけないみたい。

$message = new xmlrpcmsg('mt.supportedMethods',array(new xmlrpcval('')));

//(4)サーバへ送信

$result = $server->send($message);

//(5)結果の表示
if (!$result){
print "HTTPサーバに接続できませんでした。";
}
else {
header("Content-Type: application/xml; charset=utf-8");
print $result->serialize();
}
?>

投稿者 zackie : 2006年07月29日 00:51

trackback2.gif

このエントリーのトラックバックURL:
http://www.zackie.biz/blog/mt-tb.cgi/1214

comment2.gif





以上の情報を保存しますか?

※保存すると次回コメントする際に、名前、メールアドレス、URLを書き込む手間が省けます

(HTMLタグを使うことができます)

スパムコメント対策です。
お手数ですが、画像に表示された文字列をテキストボックスに入力してください。:

※コメントをご投稿いただいた後、反映されるまでに若干の時間を要する場合がございます。ご了承ください。