AmazonのPAAPIでエラー。「Fatal error: Cannot use object of type PEAR_Error as array in 行番号」といった感じのメッセージが返ってきている。
気づいたのは、Googleのウェブマスターツールから。そのページでレスポンスコード「500」が出ているという。そのページをチェックすると、表示されない。Apacheの.htaccessでエラー表示をしない設定にしているので内容はわからない。当然だ。続いて、ローカル環境でテスト。こちらは当然エラーを表示する設定だ。
そこで確認できたのが冒頭の
Fatal error: Cannot use object of type PEAR_Error as array in 行番号
だ。PEARのServices/Amazonライブラリを使用しているのだけど、それなんだろう。Googleで検索すると、1時間に2000以上のリクエストをした場合の例が出てきた。
今回も、なんらかのメッセージがPAAPIから返ってきているはずである。さらにそのメッセージも確認。
AWS.InvalidParameterValue:13321861は、BrowseNodeIdの値として無効です。値を変更してから、再度リクエストを実行してください。
ブラウズノードが有効じゃないそうだ。
ブラウズノードは変動する場合がある。新しいノードが追加される場合もあるし、前あったものがなくなることもある。それにひっかかったんだろう。
ここで挙げているウェブアプリケーションは、ブラウズノードを指定してItemSearchをしている。
すなわち Operationに「ItemSearch」、BrowseNodeにブラウズノードを指定しているのだ。
でもって、そのブラウズノードの親ノード、子ノードの情報も取得して、さらにページへのリンクを作るために、BrowseNodeLookupを行なっている。そこでエラーが出ているのだ。
じゃあ、BrowseNodeLookupの部分だけなくせばどうか?
なんと、これで通る。
同じブラウズノードを指定していてもBrowseNodeLookupはだめで、ItemSearchはOKなのだ。
こんなこともあるのだな。もちろん、ItemSearchで拾えたデータにもブラウズノードに関する情報(ノードの名称とか)は含まれてない。商品の情報だけが返ってくるのだ。このノードが何のノードだったかを知るすべももうない。
まあ、いずれにしても、そのブラウズノードはいつかはなくなるのだろう。ItemSearchも通らなくなると思われる。
じゃあ、どうしよう。
エラーが出ているんじゃ困る。とりあえず、ItemSearchで取得できた商品は表示するようにしておく。そっからAmazonへ飛んでくれればめっけものだ。
そんでもって、BrowseNodeLookupで取得したナビゲーション部分のうち、今回ひっかかったブラウズノードは、すでに表示されることはないはず(拾えないのだから)。Googleのbotもここはもう見なくなるだろう。
という予想は間違ってるだろうか? どっちにしても検索してひっかかるようなページではないだろうし。とか言ってたら最初からやることはないのだが。
そういえば、ブラウズノードが変更されました、っていうAmazonのアナウンスをちょっと前に見たような気がしたけど、どこだったっけ?
コメント