Amazon API, API рекламы продукта, ItemSearch, C#

#c# #api #soap #amazon-web-services #amazon

#c# #API #soap #amazon-advertising-api

Вопрос:

Я пытаюсь использовать новый продукт Amazon API для поиска продуктов на Amazon. Я просматривал их пример кода и примеры других людей, но я не получаю никаких результатов и задаюсь вопросом, использовал ли кто-нибудь еще API в последнее время и мог бы оказать некоторую помощь?

 using System;
using System.ServiceModel;
using Simple.Amazon.ECS;

namespace Simple {
    class Program {
        // your Amazon ID's
        private const string accessKeyId = "*******************";
        private const string secretKey = "************************************";

        // the program starts here
        static void Main(string[] args) {

            // create a WCF Amazon ECS client
            BasicHttpBinding binding        = new BasicHttpBinding(BasicHttpSecurityMode.Transport);
            binding.MaxReceivedMessageSize  = int.MaxValue;
            AWSECommerceServicePortTypeClient client = new AWSECommerceServicePortTypeClient(
                binding,
                new EndpointAddress("https://webservices.amazon.com/onca/soap?Service=AWSECommerceService"));

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

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

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

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

            // write out the results
            foreach (var item in response.Items[0].Item) {
                Console.WriteLine(item.ItemAttributes.Title);
            }
        }
    }
}
  

Все образцы / примеры похожи на это по структуре, но когда дело доходит до цикла foreach, элементы не возвращаются (Null), поэтому я получаю ошибку исключения null.

Комментарии:

1. Что именно response содержит?

2. «Ссылка на объект не установлена для экземпляра объекта». Когда он достигает цикла foreach.

3. Хотел бы я сказать вам, что не так. Я запустил код, который я загрузил из [1], и он работает так, как ожидалось. [1] flyingpies.wordpress.com/2009/08/01/17

4. Да, я также скачал образец оттуда и просто добавил свой ключ доступа и секретный ключ, и он падает, что очень расстраивает, если вы только что сделали это, и это работает для вас.

5. Добавление поиска предметов. AssociateTag = «»; в коде, похоже, проблема решена, и я возвращаю результаты.

Ответ №1:

если решение, указанное выше, все еще не будет работать.

попробуйте это..

загрузите пример кода на http://www.falconwebtech.com/post/2010/06/14/Using-WCF-and-SOAP-to-Send-Amazon-Product-Advertising-API-Signed-Requests.aspx

нам нужно обновить ссылки на службы, внести небольшие изменения в app.config, program.cs и reference.cs.

app.config: (1.) Тег AppSettings; присвоить accessKeyId и значение SecretKey, добавить . (2.) тег поведения -> Тег конечных точек -> тег поведения -> тег подписи; присвоить ключ доступа и значение секретного ключа. (3.) тег привязки -> Базовый тег привязки HttpBinding; (необязательно) удалить тег привязки, кроме AWSECommerceServiceBindingNoTransport и AWSECommerceServiceBindingTransport. (4.) тег клиента; удалить тег конечной точки, кроме AWSECommerceServiceBindingTransport.

program.cs: добавить поиск предметов.Ассоциативный тег = ConfigurationManager.AppSettings[«AssociateTag»]; перед ItemSearchResponse ответ = amazonClient.Поиск предметов(ItemSearch);

reference.cs: (откройте файл в папке ссылок на службы с помощью Visual studio) измените private ImageSet[][] imageSetsField; на private ImageSet[] imageSetsField; измените public ImageSet[][] Наборы изображений {…} на public ImageSet[] Наборы изображений {…}

наконец-то мы можем запустить нашу программу, и она заработает. удачи..

примечание: я использую Microsoft Visual Studio 2010. будет 1 предупреждение (недопустимое поведение подписи дочернего элемента), я думаю, мы можем его проигнорировать, или, если у вас есть какое-либо решение, пожалуйста, поделитесь .. ^^ v..

Ответ №2:

Это ошибка wsdl, я использую ссылку ниже, чтобы исправить ее:https://forums.aws.amazon.com/thread.jspa?threadID=86989