XML-RPCを用いて、PHPからFC2ブログに投稿する。
こんな感じでいけた。
これで色々出来そう。
<?php
require_once("XML/RPC.php"); //XML-RPC package 読み込み
$GLOBALS['XML_RPC_defencoding'] = "UTF-8";
//XML-RPCインタフェース、ユーザ定義
$fc2_host = "blog.fc2.com";
$fc2_xmlrpc_path = "/xmlrpc.php";
$fc2_user = "ここにID";
$fc2_passwd = "ここにパスワード";
$bm = new BlogManager();
$bm->post_blog("PHPから投稿テスト3-Title","PHPから投稿テスト3-Dsescription <br/>改行コード埋め込み \n なんかいけてそう");
class BlogManager {
function post_blog($title,$content){
global $fc2_xmlrpc_path,$fc2_host,$fc2_user,$fc2_passwd;
//クライアントの作成
echo "クライアント作成<br\n>";
$c = new XML_RPC_client( $fc2_xmlrpc_path, $fc2_host, 80 );
//送信データ
$blogid = new XML_RPC_Value( 0, 'string');
$username = new XML_RPC_Value($fc2_user, 'string');
$passwd = new XML_RPC_Value($fc2_passwd, 'string');
$content = new XML_RPC_Value(array(
'title'=> new XML_RPC_Value($title, 'string'),
'description'=> new XML_RPC_Value($content, 'string'),
'dateCreated'=> new XML_RPC_Value(date("Ymd\TH:i:s",time()), 'dateTime.iso8601')
), 'struct');
$publish = new XML_RPC_Value( 1, 'boolean');
//XML-RPCメソッドのセット
$message = new XML_RPC_Message(
'metaWeblog.newPost',
array($blogid, $username, $passwd, $content, $publish) );
$this->send_message($c,$message);
}
function get_users_blogs(){
global $fc2_xmlrpc_path,$fc2_host,$fc2_user,$fc2_passwd;
//クライアントの作成
echo "クライアント作成<br\n>";
$c = new XML_RPC_client( $fc2_xmlrpc_path, $fc2_host, 80 );
$appkey = new XML_RPC_Value( '', 'string' );
$username = new XML_RPC_Value( $fc2_user, 'string' );
$passwd = new XML_RPC_Value( $fc2_passwd, 'string' );
//メッセージ作成
echo "メッセージ作成<br\n>";
$message = new XML_RPC_Message( "blogger.getUsersBlogs",array($appkey, $username, $passwd) );
send_message($c,$message);
}
function send_message($c,$message){
//print_r($c);
//print_r($message);
//メッセージ送信
echo "メッセージ送信<br\n>";
$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>";
return $result;
}
function array_convEnc($a){
if( is_array($a) ){ return array_map( 'array_convEnc', $a ); }
return mb_convert_encoding(
$a, mb_internal_encoding(),
$GLOBALS['XML_RPC_defencoding'] );
}
}
?>
こんな感じでいけた。
これで色々出来そう。
<?php
require_once("XML/RPC.php"); //XML-RPC package 読み込み
$GLOBALS['XML_RPC_defencoding'] = "UTF-8";
//XML-RPCインタフェース、ユーザ定義
$fc2_host = "blog.fc2.com";
$fc2_xmlrpc_path = "/xmlrpc.php";
$fc2_user = "ここにID";
$fc2_passwd = "ここにパスワード";
$bm = new BlogManager();
$bm->post_blog("PHPから投稿テスト3-Title","PHPから投稿テスト3-Dsescription <br/>改行コード埋め込み \n なんかいけてそう");
class BlogManager {
function post_blog($title,$content){
global $fc2_xmlrpc_path,$fc2_host,$fc2_user,$fc2_passwd;
//クライアントの作成
echo "クライアント作成<br\n>";
$c = new XML_RPC_client( $fc2_xmlrpc_path, $fc2_host, 80 );
//送信データ
$blogid = new XML_RPC_Value( 0, 'string');
$username = new XML_RPC_Value($fc2_user, 'string');
$passwd = new XML_RPC_Value($fc2_passwd, 'string');
$content = new XML_RPC_Value(array(
'title'=> new XML_RPC_Value($title, 'string'),
'description'=> new XML_RPC_Value($content, 'string'),
'dateCreated'=> new XML_RPC_Value(date("Ymd\TH:i:s",time()), 'dateTime.iso8601')
), 'struct');
$publish = new XML_RPC_Value( 1, 'boolean');
//XML-RPCメソッドのセット
$message = new XML_RPC_Message(
'metaWeblog.newPost',
array($blogid, $username, $passwd, $content, $publish) );
$this->send_message($c,$message);
}
function get_users_blogs(){
global $fc2_xmlrpc_path,$fc2_host,$fc2_user,$fc2_passwd;
//クライアントの作成
echo "クライアント作成<br\n>";
$c = new XML_RPC_client( $fc2_xmlrpc_path, $fc2_host, 80 );
$appkey = new XML_RPC_Value( '', 'string' );
$username = new XML_RPC_Value( $fc2_user, 'string' );
$passwd = new XML_RPC_Value( $fc2_passwd, 'string' );
//メッセージ作成
echo "メッセージ作成<br\n>";
$message = new XML_RPC_Message( "blogger.getUsersBlogs",array($appkey, $username, $passwd) );
send_message($c,$message);
}
function send_message($c,$message){
//print_r($c);
//print_r($message);
//メッセージ送信
echo "メッセージ送信<br\n>";
$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>";
return $result;
}
function array_convEnc($a){
if( is_array($a) ){ return array_map( 'array_convEnc', $a ); }
return mb_convert_encoding(
$a, mb_internal_encoding(),
$GLOBALS['XML_RPC_defencoding'] );
}
}
?>
このコメントは管理者の承認待ちです
2008/08/25 月 06:52:44 |
|
#編集
このコメントは管理者の承認待ちです
2009/07/16 木 12:30:54 |
|
#編集
このコメントは管理者の承認待ちです
2010/11/04 木 09:16:22 |
|
#編集
管理人の承認後に表示されます
2009/11/02 Mon 13:56:06 |
2009/11/02 Mon 13:56:06 |