API поиска eBay .NET SDK «findItemsAdvanced» возвращает нулевой ответ - PullRequest
3 голосов
/ 01 сентября 2010

Я пытаюсь использовать eBay Finding API для отправки запроса расширенного поиска и возврата результатов. Я включил свой код ниже.

Почему-то, когда я попадаю в следующую строку:

FindItemsAdvancedResponse response = service.findItemsAdvanced(request);

объект с именем «response» возвращается как ноль.

Я не уверен, куда иду не так, и из звонка на service.findItemsAdvanced()

не выдается никаких исключений

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

Вот мой program.cs до проблемы

Progam.cs

using System;
using System.ServiceModel;
using System.ServiceModel.Channels;
using EbayParser.com.ebay.developer;
using System.Net;
namespace EbayParser
{

    class Program
    {
        static void Main(string[] args)
        {
            try
            {

                // Creating an object to the BestMatchService class

                CustomFindingService service = new CustomFindingService();
                service.Url = "http://svcs.sandbox.ebay.com/services/search/FindingService/v1";

                com.ebay.developer.FindItemsAdvancedRequest request = new EbayParser.com.ebay.developer.FindItemsAdvancedRequest();

                //Create Filter Objects
                com.ebay.developer.ItemFilter filterEndTimeFrom = new EbayParser.com.ebay.developer.ItemFilter();
                com.ebay.developer.ItemFilter filterEndTimeTo = new EbayParser.com.ebay.developer.ItemFilter();
                com.ebay.developer.ItemFilter filterCatID = new EbayParser.com.ebay.developer.ItemFilter();

                //Set Values for each filter
                filterEndTimeFrom.name = EbayParser.com.ebay.developer.ItemFilterType.EndTimeFrom;
                filterEndTimeFrom.value = new string[] { "" };

                filterEndTimeTo.name = EbayParser.com.ebay.developer.ItemFilterType.EndTimeTo;
                filterEndTimeTo.value = new string[] { "" };

                filterCatID.name = EbayParser.com.ebay.developer.ItemFilterType.EndTimeFrom;
                filterCatID.value = new string[] { "" };

                //Create the filter array
                com.ebay.developer.ItemFilter[] itemFilters = new EbayParser.com.ebay.developer.ItemFilter[3];

                //Add Filters to the array
                itemFilters[0] = filterCatID;
                itemFilters[1] = filterEndTimeFrom;
                itemFilters[2] = filterEndTimeTo;

                request.itemFilter = itemFilters;
                request.keywords = "ipod";

                // Creating response object

                FindItemsAdvancedResponse response = service.findItemsAdvanced(request);

и вот код для класса "CustomFindingService.cs"

CustomFindingService.cs

using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using EbayParser.com.ebay.developer;

namespace EbayParser
{
    class CustomFindingService : FindingService
    {
        protected override System.Net.WebRequest GetWebRequest(Uri uri)
        {

            try
            {

                HttpWebRequest request = (HttpWebRequest)base.GetWebRequest(uri);

                request.Headers.Add("X-EBAY-SOA-SECURITY-APPNAME", "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx");

                request.Headers.Add("X-EBAY-SOA-OPERATION-NAME", "findItemsByKeywords");

                request.Headers.Add("X-EBAY-SOA-SERVICE-NAME", "FindingService");

                request.Headers.Add("X-EBAY-SOA-MESSAGE-PROTOCOL", "SOAP11");

                request.Headers.Add("X-EBAY-SOA-SERVICE-VERSION", "1.0.0");

                request.Headers.Add("X-EBAY-SOA-GLOBAL-ID", "EBAY-US");

                return request;

            }

            catch (Exception ex)
            {

                throw ex;

            }

        }
    }
}

Ответы [ 2 ]

2 голосов
/ 23 февраля 2011

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

Ваш заголовок X-EBAY-SOA-OPERATION-NAME читает findItemsByKeywords. Изменение на findItemsAdvanced должно сработать.

1 голос
/ 03 сентября 2010

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

Перед применением следует проверить, что фильтры не равны нулю.их по вашему запросу.

...