一つ前のエントリーを見ると、BlogPetからの投稿は成功したようです。
しかし、BlogPetのコントロールパネルを見ると…
と、投稿に失敗した事になっています。うーむ、なんでだろ?
BlogPetコンパネから「投稿テスト」を行うと
上のように投稿失敗表示が出ますが、投稿そのものは成功します。「投稿できてりゃいいじゃん!」という声と「うーん、なんだか気持ち悪いぞ」という声が頭の中で交錯。沈思黙考…。
しかし、ふと思い立って別のサーバのNucleusでテストしてみる事にしました。いわゆる(私なりの)問題の切り分けってやつです。
新しく試すNucleusは、別のドメイン、別のネットワークで物理的に別のサーバであるだけでなく、別のディストリのLinuxとかなり環境が違うものです。(但し、ApacheとPHPのバージョンは同じ)
別のNucleusに同じようにserver2.phpとapi_metaweblog2.inc.phpを用意し、BlogPetの投稿のための情報を変更して「投稿テスト」をクリック!すると…
なんと、成功するではありませんか!なぜだ!ザビタンの反逆。アクマイザー3もビックリです。(すみません、意味わかんないすね)
XML関連のライブラリを新しいのに差し替えててPHPのリコンパイルもしてみましたが、結果は変わらず。せめて、BlogPetが「投稿失敗」と判断している証拠(レスポンスコード)が見られればだいぶ話は変わってくるのですが、そのような機能はありません。たぶん、問い合わせても教えてくれないでしょう。
しょーがないので、xmlrpcs.inc.phpのxmlrpc_server::service()のあたりで、何を返しているのか調べてみました。
投稿失敗と表示されるNucleus
<?xml version="1.0" ?>
<methodResponse>
<params>
<param>
<value><string><![CDATA[215]]></string></value>
</param>
</params>
</methodResponse>
投稿完了(成功)と表示されるNucleus
<?xml version="1.0" ?>
<methodResponse>
<params>
<param>
<value><string><![CDATA[12]]></string></value>
</param>
</params>
</methodResponse>
valueの数字が違いますが、これはどちらもBlogPetによって投稿されたアイテムのitemNoを返しているため相違しているだけであり、「失敗」とレスポンスしているようには思えません。私が期待した「faultCode」は返していませんでした。
ここまで来るとお手上げです。何故「失敗」と言われるのかわかりません。
もう駄目… 誰か助けて…。ま、投稿は成功してるからいいか…。いいのか?
関連エントリー
・
BlogPetからNucleusへの投稿(設置編)