3

eBay Finding APIを使用して、高度な検索リクエストを送信し、結果を返そうとしています。以下にコードを含めました。

どういうわけか、次の行にたどり着いたとき:

FindItemsAdvancedResponse response = service.findItemsAdvanced(request);

「応答」と呼ばれるオブジェクトがnullとして返されます。

どこが間違っているのかわからないので、次の呼び出しから例外がスローされることはありません。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;

            }

        }
    }
}
4

2 に答える 2

2

キーワードによる検索から高度な方法の使用に移行したときも、まったく同じ問題が発生しました。私は自分で頭を掻くのにしばらく時間を費やしましたが、簡単な修正があることがわかりました:

ヘッダーには。がX-EBAY-SOA-OPERATION-NAME表示されますfindItemsByKeywords。に変更するとfindItemsAdvancedうまくいくはずです。

于 2011-02-23T14:54:14.143 に答える
1

フィルター配列のフィルターのいずれかを空白のままにすると、ヘッダーが正しく含まれているかどうかに関係なく、SOA操作ヘッダー欠落例外が発生します。

フィルタをリクエストに適用する前に、フィルタがnullでないことを確認する必要があります。

于 2010-09-03T12:59:00.790 に答える