2004年07月28日

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

コメント コメントしてください




保存しますか?