Amazon Web サービスのバグ?
Su-Jine では Amazon Web サービスを利用して Amazon の書籍・DVD・エレクトロニクスを売っている。この Amazon Web サービスは非常に強力なツールである。自分のサイトから Amazon に XML, SOAP でアクセスし、Amazon の全ての商品を売ることが出来る。
この Amazon Web サービスにはいろいろな開発言語のサンプルプログラムが付いている。Su-Jine では、大部分が PHP で作成しているため、PHP のサンプルコードを用いて作っていこうと考えた。
XML と SOAP のどちらを使うか悩んだ末、SOAP でアクセスすることに決めた。しかし、DoBrowseNodeSearch がどうしても結果が帰ってこない。
サンプルは Amazon.com に接続するようになっているため、Amazon.co.jp に接続するよう変更し、日本語を取得できるようにした。しかし、DoBrowseNodeSearch を使って検索をしても、検索結果が 0 となる。Debug モードで確認すると、次のようなエラーメッセージが表示された。
[faultcode] => SOAP-ENV:Client
[faultstring] => We encountered an error at our end while processing your request. Please try again
[detail] => ProductDetails::Search : There must be a keys named 'browse_node', 'mode', 'devtag', 'type' in the input
このエラーメッセージを見て、サンプルソースを見直してみた。
function DoBrowseNodeSearch($BrowseNode, $Type = 'lite', $Category = 'books', $Max = DEFAULT_MAX)
{
/* Form the parameters */
$Params = array('browse-node' => htmlentities($BrowseNode),
'mode' => htmlentities($Category),
'tag' => $this->AssociateID,
'devtag' => $this->Token,
'type' => $Type);
/* Do the search */
$Ret = $this->_DoSearch('BrowseNodeSearchRequest', $Params, $Max, 'Details');
/* Return result */
return $Ret;
}
$Params を見ると "browse-node" とあり、エラーメッセージでは "browse_node" が必要とある。"-" (ハイフン) と "_" (アンダーバー) の違いだけだったのだが、かなりの時間を費やしてしまった。
しかし、browse_node に変更してもなぜか XML でアクセスしたときと結果が異なる。理由がわからないまま、SOAP をやめて XML に変更をした。もう少し理由を調べてみたいと思う。
投稿者 Su-Jine : 2004年07月28日 15:04
↑AdSense (アドセンス) 小切手の換金手数料を無料にする
Su-Jine の独り言
↓PHP 5.0.0 をインストール
このエントリーのトラックバックURL:
このリストは、次のエントリーを参照しています: Amazon Web サービスのバグ?:
» texas holdem from texas holdem
'Slapdash egoism, Midgley says, 訴s not really a very puzzling phenomenon. Nor, I... [続きを読む]
トラックバック時刻: 2005年02月23日 01:55
コメント コメントしてください