Movable Typeで動かすXML-RPCについて - ホームページ制作 香川県/WEBコンサルティング

 
 

Movable Typeで動かすXML-RPCについて

XML-RPC は HTTP 上 でリモート手続き呼び出しを行うための簡単で手軽な方法です。
サーバへデータを送信してしまえば、記事を書いたり編集したり・・・できる技術で、ubicast Mail Bloggerや携帯からブログを操作したり、そういう技術です。

ムーバブルタイプだけでなく、例えばポータルのブログでもXML-RPCに対応していますので、同一の記事を投稿したり、そんなことも出来るかなと思い、研究したました。
XML-RPC APIについては、ムーバブルタイプのマニュアルもありますがさらに、Movable Type で使える XML-RPC APIも参考ししました。

ただ、metaWeblog.newPost についてのstruct content, /* content構造体 (記事情報) の構造体について結構苦労したので、参考に記載したいとおもいます。

PHPでXML-RPCを利用する場合,PEARパッケージ[XML_RPC]を用いることでXMLを直接記述することなく、簡単にブログラムを記述することができます。
PEAR :: Package :: XML_RPCのDownkoadページから Information「Downlord」をクリックしてください。

解凍すると、XML_RPC-1.5.1のフォルダの中にある、「RPC.php」を利用します。

プログラムについての元はPHPを用いたXML-RPCの基礎から参考にさせていただきました。 ここでのプログラムは、「blogger.getUsersBlogs」について記載されていますが、ほぼ同様のソースで動作します。 変更箇所は下記となります。

 <?php
require_once("XML/RPC.php"); //XML-RPC package 読み込み
$GLOBALS['XML_RPC_defencoding'] = "UTF-8";

//XML-RPCインタフェース、ユーザ定義
$mt_host = "172.20.11.225";
$mt_xmlrpc_path = "/~sc/sc05/mt-xmlrpc.cgi";
$mt_user = 'Melody';
$passwd ='Nelson';

//クライアントの作成
$c = new XML_RPC_client( $mt_xmlrpc_path, $mt_host, 80 );

$appkey = new XML_RPC_Value( '', 'string' );
$username = new XML_RPC_Value( $mt_user, 'string' );
$passwd = new XML_RPC_Value( $passwd, 'string' );

//メッセージ作成
$message = new XML_RPC_Message(
'blogger.getUsersBlogs',
array($appkey, $username, $passwd) );
//$message = new XML_RPC_Message('mt.supportedMethods');

上記のソースを下記のように変更します。

<?php
require_once("XML/RPC.php"); //XML-RPC package 読み込み
$GLOBALS['XML_RPC_defencoding'] = "UTF-8";

//XML-RPCインタフェース、ユーザ定義
$mt_host = "172.20.11.225";
$mt_xmlrpc_path = "/~sc/sc05/mt-xmlrpc.cgi";
//下記については環境により変更してください。
$mt_blogid = '1';
$mt_user = 'Melody';
$passwd ='Nelson';
$title ='title';
$description ='description';
$mt_text_more ='mt_text_more';

//クライアントの作成
$c = new XML_RPC_client( $mt_xmlrpc_path, $mt_host, 80 );

$blogid = new XML_RPC_Value( $mt_blogid, 'string');
$username = new XML_RPC_Value( $mt_user, 'string');
$passwd = new XML_RPC_Value($passwd, 'string');
$content = new XML_RPC_Value(array(
'title'=> new XML_RPC_Value($title, 'string'),
'description'=> new XML_RPC_Value($description, 'string'),
'mt_text_more'=> new XML_RPC_Value($mt_text_more, 'string'),
'mt_convert_breaks'=> new XML_RPC_Value('none', 'string'),
'dateCreated'=> new XML_RPC_Value(date("Ymd\TH:i:s",time()), 'dateTime.iso8601')
), 'struct');
$publish = new XML_RPC_Value( 1, 'boolean');

//メッセージ作成
$message = new XML_RPC_Message(
'metaWeblog.newPost',
array($blogid, $username, $passwd, $content, $publish) );
//$message = new XML_RPC_Message('mt.supportedMethods');

変更箇所ここまで。
プログラムについての元はPHPを用いたXML-RPCの基礎から参考にさせていただきました。

なお、動作についての保証やサポートはご勘弁くださいませ。、「blogger.getUsersBlogs」については、カテゴリーを選ぶ項目がないので、mt.setPostCategoriesもさらに動作させないといけないようですね。

« ホームページ制作 香川 | メインページへ  | 楽天ジャンル検索API »

トラックバック

このエントリーのトラックバックURL:

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)