php - 使用 Amazon API 搜索 ISBN 时出现问题

标签 php api soap amazon-web-services isbn

我在使用亚马逊 API 搜索 ISBN 时遇到一些问题。

该代码似乎适用于少数 ISBN,并返回一些结果,但是我通过 ISBN 搜索的大多数书籍(主要是事实/引用书)没有返回任何结果。

为了测试,我从亚马逊获取 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 编号返回结果。尽管这些书存在于亚马逊中,但通过 API 搜索时它们不会返回任何结果

最佳答案

在不研究 AmazonECS API 的情况下,我预计 TotalResults 为 1 时仍会返回包含单个项目的数组;通过 parseItem($response->Items->Item) 在 else 子句中的分配将相应失败(即 books[] 保持为空),因为 $response ->Items->Item 仍然是一个数组,无法解析为项目。

因此,您应该删除 else 子句并调整条件以测试 0 (或者当然是 >= 1),例如:

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

更新

Show first 10 results Amazon ECS PHP Library 的示例证实了我的期望,结果循环的实现如下:

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

    //loop through each item
    foreach ($response['Items']['Item'] as $result) {
        // [...]
    }
}

关于php - 使用 Amazon API 搜索 ISBN 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9254745/

相关文章:

php - Web 开发人员将哪些工具与 PHP、Ruby on Rails、Python 等一起使用?

javascript - 如何在动态 li 中为第一个选项卡添加事件类

java - 需要帮助创建一个有效的随机数

java - 通过将 XML 文件解析为 SOAPMessage,使用 javax.xml.soap API 构建更大的 SOAP 请求

php - CakePHP 和 GROUP BY

php - 使用 AWS api 检查 amazon s3 上是否存在对象

api - 使用YOUTUBE google-api-php-client更新视频

api - Magento 创建 api 用户并以编程方式分配其角色 [SOAP]

java - 使用 Jdom 读取 xml 文件

javascript - 无法生成使用js或php下载的文件