Поиск Amazon пример с новым сервисом Amazon - PullRequest
3 голосов
/ 16 ноября 2011

Не могу найти работающий пример нового сервиса amazon (или, по крайней мере, за последние пару лет). Ближайший рабочий пример просто возвращает нулевой элемент, независимо от того, что я поместил в заголовок. Код:

        // Amazon ProductAdvertisingAPI client
        AWSECommerceServicePortTypeClient amazonClient = new AWSECommerceServicePortTypeClient();

        // prepare an ItemSearch request
        ItemSearchRequest request = new ItemSearchRequest();
        request.SearchIndex = "Books";
        request.Title = "C#";
        request.Condition = Condition.All;
        //request.ResponseGroup = new string[] { "Small" };

        ItemSearch itemSearch = new ItemSearch();
        itemSearch.Request = new ItemSearchRequest[] { request };
        itemSearch.AWSAccessKeyId = ConfigurationManager.AppSettings["accessKeyId"];

        // send the ItemSearch request
        ItemSearchResponse response = amazonClient.ItemSearch(itemSearch);

        // write out the results from the ItemSearch request
        foreach (var itemLst in response.Items)
        {
            if (itemLst.Item != null)
            {
                foreach (var item in response.Items[0].Item)
                {
                    Console.WriteLine(item.ItemAttributes.Title);
                }
            }
            else
                Console.WriteLine("No item info was found for this response list item.");
        }
        Console.WriteLine("<Done...press enter to continue>");
        Console.ReadLine();

Что я делаю не так?

Ответы [ 2 ]

3 голосов
/ 16 ноября 2011

Я предполагаю, что вы скачали код отсюда .Если это правильно, то вам нужно заменить эту строку:

AWSECommerceServicePortTypeClient amazonClient = new AWSECommerceServicePortTypeClient();

на эти строки:

BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.Transport);
binding.MaxReceivedMessageSize = int.MaxValue;

AWSECommerceServicePortTypeClient amazonClient = new AWSECommerceServicePortTypeClient(
            binding,
            new EndpointAddress("https://webservices.amazon.com/onca/soap?Service=AWSECommerceService"));  

// add authentication to the ECS client
amazonClient.ChannelFactory.Endpoint.Behaviors.Add(new AmazonSigningEndpointBehavior(accessKeyId, secretKey));

Проблема в два раза:

  1. ВыamazonClient
  2. не связывает *1012* с HttpBinding * Вы не подписываете запрос

Если мое предположение неверно, то следует загрузить код сссылка выше, так как это рабочий пример вызова API продукта Amazon.

2 голосов
/ 02 января 2012

Я полагаю, что вашей проблемой может быть отсутствие ассоциированного тега.По состоянию на ноябрь 2011 года это требовалось для всех запросов, и в начале моего тестирования я заметил, что я получил нулевые ответы (с кодом ошибки), когда я их не включал.Я не уверен, что это все еще так, но я бы определенно предположил, что если вы не добавляете его (что я не вижу в вашем коде), это вероятный подозреваемый.

Посмотритенаверху см. примечание здесь

Если у вас нет ассоциированного идентификатора, вам необходимо подать заявление на его получение.

...