[PHP-users 34554] xml-rpcで返り値を変数に代入する方法をご教授ください。
Afical
linkmaster @ afical.com
2009年 4月 23日 (木) 17:49:07 JST
MTのxml-rpc機能を利用してブログの情報を取得するWebアプリを開発しております。
PHPでXML-RPCのクライアントを作成してMTに「blogger.getUsersBlogs」を送信すると
結果が以下のような内容でブラウザに表示されます。
--------------------------------------------------------------------
Array
(
[0] => Array
(
[url] => http://hogehoge.jp/blog1
[blogName] => テストブログ1
[blogid] => 1
)
[1] => Array
(
[url] => http://hogehoge.jp/blog2
[blogName] => テストブログ2
[blogid] => 2
)
)
--------------------------------------------------------------------
私がやりたい事は、上記の結果の内容から[blogName] や[blogid] を変数として代入したいです。
例えば、
$blogname1 =[0] => Array の[blogName] (上記の場合、テストブログ1)
$url1 =[0] => Array の[url] (上記の場合、http://hogehoge.jp/blog1)
$blogname2 =[1] => Array の[blogName] (上記の場合、テストブログ2)
$url2 =[1] => Array の[url] (上記の場合、http://hogehoge.jp/blog2)
とても簡単なことかもしれませんが、ぜひ教えてください。
よろしくお願いいたします。
--------------------------------------------------------------------
参考として、上記の結果を返すPHPのソースを記述いたします。
<?php
header("Content-Type: text/html;charset=UTF-8");
require_once("XML/RPC.php");
$GLOBALS['XML_RPC_defencoding'] = "UTF-8";
//XML-RPCインタフェース、ユーザ定義
$mt_host = "hogehoge.jp"; //MTのホスト情報
$mt_xmlrpc_path = "/mt-xmlrpc.cgi"; //mt-xmlrpcまでのパス
$mt_user = 'xxxxxx'; //MTのユーザー
$passwd ='xxxxxxxx'; //MTのWebサービスパスワード
//クライアントの作成
$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');
//メッセージ送信
$result = $c->send($message);
if( !$result ){
exit('Could not connect to the server.');
}else if( $result->faultCode() ){
exit('XML-RPC fault ('.$result->faultCode().'): '
.$result->faultString());
}
$blogs = array_map( 'array_convEnc', XML_RPC_decode( $result->value() ) );
echo "<pre>";
print_r($blogs);
echo "</pre>";
function array_convEnc($a)
{
if( is_array($a) ){ return array_map( 'array_convEnc', $a ); }
return @mb_convert_encoding(
$a, mb_internal_encoding(),
$GLOBALS['xmlrpc_internalencoding'] );
}
?>
T,aoki
linkmaster @ afical.com
PHP-users メーリングリストの案内