Amazon Product Advertising API - поиск нескольких UPC - PullRequest
3 голосов
/ 23 июня 2011

С помощью API рекламы продуктов Amazon. Я ищу 2 разных UPC:

 // prepare the first ItemSearchRequest
 // prepare a second ItemSearchRequest
 ItemSearchRequest request1 = new ItemSearchRequest();
 request1.SearchIndex = "All";
 //request1.Keywords = table.Rows[i].ItemArray[0].ToString();
 request1.Keywords="9120031340270";
 request1.ItemPage = "1";
 request1.ResponseGroup = new string[] { "OfferSummary" };


 ItemSearchRequest request2 = new ItemSearchRequest();
 request2.SearchIndex = "All";
 //request2.Keywords = table.Rows[i+1].ItemArray[0].ToString();
 request2.Keywords = "9120031340300";
 request2.ItemPage = "1";
 request2.ResponseGroup = new string[] { "OfferSummary" };


 // batch the two requests together
 ItemSearch itemSearch = new ItemSearch();
 itemSearch.Request = new ItemSearchRequest[] { request1,request2 };
 itemSearch.AWSAccessKeyId = accessKeyId;

 // issue the ItemSearch request
 ItemSearchResponse response = client.ItemSearch(itemSearch);


 foreach (var item in response.Items[0].Item)
 {

 }
 foreach (var item in response.Items[1].Item)
 {


 }

Можно ли объединить эти два отдельных запроса в один запрос и просто получить первый запрос, вернуть 2 элемента, установив keywords = "9120031340256 and 9120031340270"

Кто-нибудь знает, как это сделать?Мне нужно специально искать СКП, это правильный способ сделать это?

Ответы [ 2 ]

3 голосов
/ 23 июня 2011

Изучив документы API Я думаю, что вы можете использовать ItemLookup, если хотите получить результаты для нескольких UPC.

ItemLookup itemLookup = new ItemLookup(){
    AssociateTag = "myaffiliatetag-20"
};
itemLookup.AWSAccessKeyId = MY_AWS_ID;

ItemLookupRequest itemLookupRequest = new ItemLookupRequest();
itemLookupRequest.IdTypeSpecified = true;
itemLookupRequest.IdType = ItemLookupRequestIdType.UPC;
itemLookupRequest.ItemId = new String[] { "9120031340300", "9120031340270" };
itemLookupRequest.ResponseGroup = new String[] { "OfferSummary" };
itemLookup.Request = new ItemLookupRequest[] { itemLookupRequest };

ItemLookupResponse response = client.ItemLookup(itemLookup);
foreach(var item in response.Items[0])
{
  //Do something...
  Console.WriteLine(item.ItemAttributes.Title);
}

При этом, если вы не работаете с поисками по некоторому идентификатору (UPC, ASIN и т. Д.), То ваш исходный код выполнения пакетного поиска по ключевым словам, по-видимому, является единственным способом сделать несколько запросов по ключевым словам в один запрос (что я смог найти ..). Если вы выполняете поиск по ключевым словам, вы всегда можете создать метод генератора ItemSearchRequest, чтобы сократить дублирующийся код при создании кратных.

1 голос
/ 17 мая 2016

Вы можете использовать следующее nuget пакет.

PM> Install-Package Nager.AmazonProductAdvertising

Пример

var authentication = new AmazonAuthentication();
authentication.AccessKey = "accesskey";
authentication.SecretKey = "secretkey";

var wrapper = new AmazonWrapper(authentication, AmazonEndpoint.DE);
var result = wrapper.Lookup(new string[] { "9120031340300", "9120031340270" }, AmazonResponseGroup.OfferSummary);
...