更新Pingを手動で送信したかったのですが、なかなかどうして、うまくできていない様子です。
perlソースはeucなので、タイトル部分はJcode->new ('ブログタイトル')->utf8;とかして、UTF8にしているつもりです。
XMLRPC::Transport::HTTP::CGIを使って、簡単なサーバーCGIを作って、ログを取ってみたりすると、ブログタイトルはUTF8だし、URLもちゃんと取得できているような気がする。
で、http://ping.bloggers.jp/rpc/とかに送信してみると、Thanks for the pingとか、Thanks for your pingとかなんとか、メッセージが戻ってきてる。
かといって、自分でブラウザで見てても、新着とかに表示されていない。
はて。何が原因なんだろうか。もしかして、そもそも、何かの制約があって、pingを受け取っても表示しないとか、送り元のIPで許可があるとか?
色々と調べた結果、どうやらうまくいっているようす。
で、このブログから適当なサーバーのCGIに更新Pingを送信させて、受信したXMLをファイルにログとして書き出させてみます。
以下のような簡単なCGIを一時的に設置してテストしてみました。
read (STDIN, $xml, $ENV{CONTENT_LENGTH});
open OUT, ">> ping.xml";
print OUT $xml . "\n\n";
close OUT;
で、受信した更新Pingをファイル出力します。
結果は、以下を標準出力に出力しました。
content-type: text/xml
<?xml version="1.0"?>
<methodResponse><params><param><value><struct>
<member><name>flerror</name><value><boolean>0</boolean></value></member>
<member><name>message</name></value><string>Thanks for the ping.</string></value></member>
</struct></value></param></params></methodResponse>
さしあたて、この記事の更新Pingが送られるようにしてみました。
受信側のCGIレスポンスは、何でもかんでもベタに成功時のXMLを出力するようにしてあります。
結果、自分で送信してる物と、同じXMLが送られている事がわかりました。
MetaGatewayからの結果
<?xml version='1.0'?>
<methodCall>
<methodName>weblogUpdates.ping</methodName>
<params>
<param>
<value><string>TagoSuckのプログラム日記 たごろぐ</string></value>
</param>
<param>
<value><string>https://tagosuck.cocolog-nifty.com/tagolog/</string></value>
</param>
</params>
</methodCall>
という事は、レスポンスのメッセージを見ても、成功しているという事だと思います。
表示されないのは、送信しているXMLの問題ではないのではないか?という結論にしようとおもいます。
あまり頻繁に送っているつもりはないのですが、スパム扱いになってフィルタリングされてしまっているか、RSS参照で記事の更新を伴っていないという事か。
ハッキリは分かりませんが、この辺りで納得する事にしました。
実際、効果の程はわかりませんが、時々使ってみようと思います。