我期待通過ItemLookupRequest亞馬遜Web服務通過結果分頁設置
沒有在結果集中使用tagpage頁面的選項,但在WSDL心不是一個tagpage選項。我遇到的問題是Itemlookup只返回10個結果。如何在不使用tagpage選項的情況下翻閱結果集?
非常感謝你的幫助
我的目標是通過一個ISBN亞馬遜和接收那本書被賤賣所有價格。看起來我只能收到10個隨機價格。我如何獲得所有的價格,如果他們限制我的回報10價格,不讓我做某種形式的分頁
我期待通過ItemLookupRequest亞馬遜Web服務通過結果分頁設置
沒有在結果集中使用tagpage頁面的選項,但在WSDL心不是一個tagpage選項。我遇到的問題是Itemlookup只返回10個結果。如何在不使用tagpage選項的情況下翻閱結果集?
非常感謝你的幫助
我的目標是通過一個ISBN亞馬遜和接收那本書被賤賣所有價格。看起來我只能收到10個隨機價格。我如何獲得所有的價格,如果他們限制我的回報10價格,不讓我做某種形式的分頁
根據ItemId文檔,每個請求最多隻能指定10個唯一的ItemIds。所以看起來他們每個請求最多有10個項目返回每個ItemLookupRequest請求的閾值。自從我使用這個API以來已經有一段時間了,但是當我使用它時,他們正在努力推銷,儘可能緩存除定價外的產品信息。這可能是他們迫使客戶通過他們的API設計緩存的方式之一。
ItemId
一個或多個(最多十個)正整數,用於唯一標識一個項目。數字的含義由IdType指定。也就是說,如果IdType是ASIN,則ItemId值是ASIN。如果ItemId是ASIN,則不能在請求中指定搜索索引。
類型:String
默認值:無
約束條件:必須是一個有效的項目ID。對於多個ID,請使用最多包含10個ID的逗號分隔列表。
我的目標是將ISBN傳遞給亞馬遜,並收到所有售價的書。看起來我只能收到10個隨機價格。我怎麼能得到所有的價格,如果他們限制我的回報10價格,而不讓我做某種形式的分頁 – gh9 2012-03-13 15:36:17
亞馬遜網絡服務代碼可能是一個導航的痛苦。在查看你發佈到ItemLookupRequest的鏈接時,你有沒有試過這個(從請求參數中拉出來的)?
相關頁面:此可選參數僅在使用RelatedItems響應組時有效。每個ItemLookup請求最多可以返回10個相關項目。 RelatedItemPage值指定了要返回的十個相關項目的集合。例如,值2返回第二組十個相關項目
我明白relatedItemPage是與您的項目相關的項目不是該項目的多個副本。讓我知道,如果我讀/錯誤地表示謝謝! – gh9 2012-03-13 20:42:05
你是對的。這看起來像是我在這個槍上跳了槍。我在網上做了一些挖掘,但找不到多少。您是否嘗試過在AWS論壇上發帖?我知道API最近發生了很多變化,使得許多這些任務變得更加困難:https://affiliate-program.amazon.com/gp/advertising/api/detail/main.html – 2012-03-14 00:48:28
https:// forums .aws.amazon.com/thread.jspa?threadID = 89335 我有一個論壇發佈那裏,沒有反應。謝謝你幫忙看看這個! – gh9 2012-03-14 12:56:46
您可以使用ItemPage參數遍歷ItemSearchResult的頁面,並使用「Sort」參數來排序項目(而不是它們)是「隨機的」;這實際上是最「有關」的)。
下面是我剛剛扔在一起,未經測試的snippit,而不是我以前做過的,但應該工作。你需要做更多的錯誤處理比我在這裏所做的,也迎合的是AWS你強加每秒限制的請求的最大數量:
private List<Item> testAWS() {
var s = new AWSECommerceServicePortTypeClient("AWSECommerceServicePortUK");
s.ChannelFactory.Endpoint.Behaviors.Add(new AmazonSigningEndpointBehavior(AWSAccessKey, AWSSecureKeyID));
var totalPages = 10; // Default value - changes on first iteration
var books = new List<Item>();
for(var i = 1; i < totalPages; i++) {
var req = new ItemSearchRequest {
SearchIndex = "Books",
ItemPage = i.ToString(CultureInfo.InvariantCulture),
Keywords = "Your ISBN", // There may be a better way to search for an ISBN - I haven't yet needed to
Sort = "price", // Sort depends on which endpoint you are searching.
Availability = ItemSearchRequestAvailability.Available, // Gets available products (mainly)
ResponseGroup = new[] { "Small" } // Change for more details
};
var search = new ItemSearch {
AWSAccessKeyId = AWSAccessKey,
AssociateTag = AWSAssociateTag,
Request = new[] { req }
};
var response = s.ItemSearch(search);
// Store response in a list or something, which you can reorder as you want
books.AddRange(response.Items[0].Item);
totalPages = int.Parse(response.Items[0].TotalPages ?? "0");
}
// return your books, ordered by price ascending
return books.OrderBy(b => b.Offers.Offer[0].OfferListing[0].Price.Amount).ToList();
}
這是一個方面說明的一些,而你只能返回10個結果,你可以在我相信的時候發出兩個請求,每次調用Web服務總共可以得到20個結果。已經有一段時間了,但我認爲請求對象是一個數組,而且最多可以做兩個。您可以嘗試一下,它可以加快您的流程。 – 2012-03-13 17:50:15