2

AmazonAPIを使用してISBNを検索する際にいくつか問題が発生しています。

コードはFEWisbnで機能するように継ぎ目があり、いくつかの結果を返しますが、ISBNで検索した本(主に事実/参考書)の大部分は結果を返しません。

テストするために、AmazonからISBN-10番号を取得しています。次に、独自の検索でこのISBNを検索してテストしました。

これは、結果を得るために使用するコードです。誰かが欠陥を見つけることができるとは思いませんか?

function getBooks($isbn){
    $client = new AmazonECS('AWS_API_KEY', 'AWS_API_SEECRET_KEY', 'co.uk', 'tutorp-21');
    $response  = $client->responseGroup('Small,Images,EditorialReview')->category('Books')->search($isbn);

$books = array();

if($response->Items->TotalResults > 1){
    foreach($response->Items->Item as $item)
        $books[] = parseItem($item);
}else if($response->Items->TotalResults == 1){
    $books[] = parseItem($response->Items->Item);
}

return $books;
}

乾杯

編集:明確にするために...私たちが直面している問題は、一部のISBN番号のみが結果を返すことです。これらの本はAmazonに存在しますが、APIを介して検索したときに結果を返すために継ぎ目がありません

4

2 に答える 2

1

APIを調べなくても、1が1つのアイテムを含む配列を返すことをAmazonECS期待しています。はまだ配列であり、アイテムに解析できないためTotalResults、else句のviaでの割り当ては、それparseItem($response->Items->Item)に応じて失敗します(つまりbooks[]、空のままになります) 。$response->Items->Item

>= 1したがって、else句を削除し、代わりに(またはもちろん)0をテストするように条件を調整する必要があります。例:

// [...]
if($response->Items->TotalResults > 0){
    foreach($response->Items->Item as $item)
        $books[] = parseItem($item);
}
// [...]

アップデート

Amazon ECS PHPライブラリ最初の10件の結果を表示する例は、私の期待を裏付けています。結果ループは次のように実装されています。

//check that there are items in the response
if (isset($response['Items']['Item']) ) {

    //loop through each item
    foreach ($response['Items']['Item'] as $result) {
        // [...]
    }
}
于 2012-02-13T07:10:41.467 に答える
1

問題は社説のない本でした。書かれたコードは正常に機能しますが、すべての情報なしで返される本には例外が必要でした。

于 2012-02-20T19:06:42.607 に答える