Как использовать AspectHistogramContainer в API поиска ebay? - PullRequest
0 голосов
/ 09 января 2012

Я новичок, пытающийся написать программу для получения базы данных изображений платьев от eBay с использованием API поиска. Я программирую на Java и использую ОС Windows 7. Получив от пользователя ключевое слово для поиска, я использовал вызов FindItemsAdvanced для получения списка продуктов в этой категории. Я хочу получить атрибуты каждого из этих элементов, такие как цвет, длина рукава и т. Д. Для этого я использовал AspectHistogramContainer, чтобы получить аспекты и значения. Фрагмент кода ниже:

AspectHistogramContainer aspectContainer=new AspectHistogramContainer();
aspectContainer=advanceResponse.getAspectHistogramContainer();
aspectContainer.setDomainDisplayName(keywords);
aspectContainer.setDomainName(keywords);            
List<Aspect> aspectList=aspectContainer.getAspect();
for(Aspect aspect:aspectList)
{               
    System.out.println(aspect.getName());
    List<AspectValueHistogram> aspectValueList= aspect.getValueHistogram();
    for(AspectValueHistogram aspectValue:aspectValueList)
    {
        System.out.println(aspectValue.getValueName());
        }
}

advanceResponse - это объект FindItemsAdvancedResponse.

Но AspectHistogramContainer всегда только нулевой, то есть элементы не имеют аспектов. Я дал только листовые категории в качестве входных данных, как того требует AspectHistogramContainer. Я перепробовал все пути, но не могу найти причину. Может кто-нибудь сказать мне, что не так?

1 Ответ

1 голос
/ 10 января 2012

Разобрался!Мне пришлось установить Id категории для объекта GetHistogramRequest, а затем использовать этот объект для получения AspectHistogramContainer.Ниже приведен фрагмент кода:

GetHistogramsRequest abcd = new GetHistogramsRequest();
abcd.setCategoryId(CatID.toString());
GetHistogramsResponse bb = port.getHistograms(abcd);
advanceResponse.setAspectHistogramContainer(bb.getAspectHistogramContainer());
AspectHistogramContainer aspectContainer=new AspectHistogramContainer();
aspectContainer=advanceResponse.getAspectHistogramContainer();
aspectContainer.setDomainDisplayName(keywords);
aspectContainer.setDomainName(keywords);            
List<Aspect> aspectList=aspectContainer.getAspect();
for(Aspect aspect:aspectList)
{               
    System.out.println(aspect.getName());
    List<AspectValueHistogram> aspectValueList= aspect.getValueHistogram();
    for(AspectValueHistogram aspectValue:aspectValueList)
    {
        System.out.println(aspectValue.getValueName());
        }
}

CatId - это идентификатор категории, а advanceResponse - это FindItemsByAdvanceRequestObject. Но он по-прежнему дает только аспекты для каждой категории.Чтобы получить конкретный аспект каждого элемента в этой категории, следует использовать аспектный фильтр.Я не уверен, как инициализировать значения аспектов для каждого аспекта в фильтре аспектов и как связать его с объектом ответа.Есть идеи?

...