Вопрос по amazon, amazon-product-api, c#, wcf – Поиск Amazon пример с новым сервисом Amazon

3

Я не могу найти работающий пример нового сервиса 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

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

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));

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

Вы не связываетеamazonClient к HttpBindingВы не подписываете запрос

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

Боюсь, я больше не могу тебе помочь. За пределами этого кода есть что-то не так. Возможно, один из ваших ключей неверен? Код по ссылке в моем ответе работает с моими ключами. Сожалею. Jonathan Spooner
Мой предыдущий код и текущий код из другого примера предложили выдать ту же ошибку о response.Items [0] .Item равным нулю. Я смотрю в отладчике и уверен, что это ноль. user1043430
2

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

Посмотрите на верхнюю заметку об изменении здесь

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

Вы также можете посмотреть здесь:stackoverflow.com/a/8912276/225808 citronas

Похожие вопросы