2012-03-13 18 views
0

我期待通過ItemLookupRequest亞馬遜Web服務通過結果分頁設置

沒有在結果集中使用tagpage頁面的選項,但在WSDL心不是一個tagpage選項。我遇到的問題是Itemlookup只返回10個結果。如何在不使用tagpage選項的情況下翻閱結果集?

非常感謝你的幫助

我的目標是通過一個ISBN亞馬遜和接收那本書被賤賣所有價格。看起來我只能收到10個隨機價格。我如何獲得所有的價格,如果他們限制我的回報10價格,不讓我做某種形式的分頁

+0

這是一個方面說明的一些,而你只能返回10個結果,你可以在我相信的時候發出兩個請求,每次調用Web服務總共可以得到20個結果。已經有一段時間了,但我認爲請求對象是一個數組,而且最多可以做兩個。您可以嘗試一下,它可以加快您的流程。 – 2012-03-13 17:50:15

回答

0

根據ItemId文檔,每個請求最多隻能指定10個唯一的ItemIds。所以看起來他們每個請求最多有10個項目返回每個ItemLookupRequest請求的閾值。自從我使用這個API以來已經有一段時間了,但是當我使用它時,他們正在努力推銷,儘可能緩存除定價外的產品信息。這可能是他們迫使客戶通過他們的API設計緩存的方式之一。

ItemId
一個或多個(最多十個)正整數,用於唯一標識一個項目。數字的含義由IdType指定。也就是說,如果IdType是ASIN,則ItemId值是ASIN。如果ItemId是ASIN,則不能在請求中指定搜索索引。

類型:String

默認值:無

約束條件:必須是一個有效的項目ID。對於多個ID,請使用最多包含10個ID的逗號分隔列表。

+0

我的目標是將ISBN傳遞給亞馬遜,並收到所有售價的書。看起來我只能收到10個隨機價格。我怎麼能得到所有的價格,如果他們限制我的回報10價格,而不讓我做某種形式的分頁 – gh9 2012-03-13 15:36:17

0

亞馬遜網絡服務代碼可能是一個導航的痛苦。在查看你發佈到ItemLookupRequest的鏈接時,你有沒有試過這個(從請求參數中拉出來的)?

相關頁面:此可選參數僅在使用RelatedItems響應組時有效。每個ItemLookup請求最多可以返回10個相關項目。 RelatedItemPage值指定了要返回的十個相關項目的集合。例如,值2返回第二組十個相關項目

+0

我明白relatedItemPage是與您的項目相關的項目不是該項目的多個副本。讓我知道,如果我讀/錯誤地表示謝謝! – gh9 2012-03-13 20:42:05

+0

你是對的。這看起來像是我在這個槍上跳了槍。我在網上做了一些挖掘,但找不到多少。您是否嘗試過在AWS論壇上發帖?我知道API最近發生了很多變化,使得許多這些任務變得更加困難:https://affiliate-program.amazon.com/gp/advertising/api/detail/main.html – 2012-03-14 00:48:28

+0

https:// forums .aws.amazon.com/thread.jspa?threadID = 89335 我有一個論壇發佈那裏,沒有反應。謝謝你幫忙看看這個! – gh9 2012-03-14 12:56:46

0

您可以使用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(); 

    } 
+0

如果條件設置爲全部,itemSearch最多將返回9個結果。如果您指定一個條件,它將返回該條件的3個結果。 http://docs.amazonwebservices.com/AWSECommerceService/2011-08-01/DG/ItemSearch.html 第二段 – gh9 2012-03-21 20:27:32

+0

我已經將「ItemPage」參數添加到ItemSearchRequest對象 - 文檔指出這將檢索頁的結果。這個例子每頁調用一次服務。我不知道它是否有效,因爲我沒有嘗試過,但它只是一個建議:) – Spikeh 2012-03-22 07:57:22