Yahooブログ検索のping受信機能の不具合
以前、お仕事でお受けした案件で出た問題が解決したのでメモ。
更新ping(weblogUpdates.ping)の送信プログラム作成の依頼をいただいたので、xmlrpc.incを使ってスクリプトを書いてみた。基本的にほぼ全てのpingサーバにおいて、ping送信時のレスポンスを正しく受け取ることができた。しかし日本のyahooだけは「No data received from server.」なぁんていうレスポンスを返してくる。理由がワカラナイ・・・。
納品時は「yahooだけだから」ということで原因探求を免除していただいたのだが、やはり気になる。少し時間をとって調査をしてみた。調査方法としてはfsockopenで最低限の内容で生通信して成功することを確認し、成功結果と失敗結果を比較する方法で調査をおこなった。
結論として、xmlのデータ構成がyahooには気に入らなかったらしい。
本来pingデータはxmlでpostされてくるわけだが、そのxmlを構成している要素は基本2個、拡張2個の合計4個の要素で構成される。もちろん拡張2個はなくても問題ない(基本の2個を押さえていればいいはず)。4つの要素はそれぞれ以下のような感じ。
○サイト名
○サイトURL
○更新のあった(新しく追加された)ページのURL
○カテゴリ
yahooが気に入らなかったのは4つの要素が送られてきた点。つまり「拡張2個が余計だ」ということらしい。4つの要素で構成されたxmlを投げた場合はエラーとなり、基本の2つの要素でxmlを構成した場合は、正常なレスポンスが返された。70ほどのpingサーバを試してみたが、「No data …」のエラーは日本のYahooだけ(アメリカYahooでも問題ないのに・・・)。
まぁ、何はともあれすっきりした。
結局最近のpingサーバは、pingを受信した後、rssを収集して回るようになっているので、そもそもpingの拡張要素自体に意味がないのかもしれない。
それにしても・・・Yahoo、こういうのって最低限対応しておくべきではない?。