人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1415224089
こちらの方と全く同じ症状、エラーで悩んでおりました。
参考までにPHPはVersion 5.2.1、XML_RPC-1.5.1を使用しております。
ご教授のほど、よろしくお願い致します。


●質問者: JMaster
●カテゴリ:ウェブ制作
✍キーワード:C-1 PHP エラー 教授
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● kent013
●100ポイント ベストアンサー

出ているのはエラーではなく,ワーニングなので,動作自体は問題ないです.

ただ,やり取りはUTF-8で行う必要があるので,そのスクリプトをUTF-8で保存してください.

すると問題なく,記事が投稿されているはずです.


また,ワーニング自体は,コードを読む限りデバッグ出力のためにエンコード変換をしているところで出ていますので,その行を削除してしまって構わないです.

具体的には

<?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) );
 
 $this->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());
 }
 
 return XML_RPC_decode( $result->value() );
 }
 
 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'] );
 }
}
?>

で動きます.

◎質問者からの返答

ありがとうございます!!

UTFで保存はもちろん、エディタを秀丸からテラパッドに変えたりいろいろ試しても

駄目だったのですが、ご教授頂いたソースで一発でワーニングが出なくなりました。

感謝致します!!


2 ● kent013
●35ポイント

補足です.

FC2はMetaWeblogというAPIを使っています.

ブログを書くということ - tohimaの日記

http://www.xmlrpc.com/metaWeblogApi

が参考になります.

◎質問者からの返答

ご丁寧にありがとうございます。

こちらの情報も参考にさせて頂きます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ