2012-01-09 38 views
0

我是一个试图编写程序的新手,使用查找API从eBay获取衣服图像的数据库。我使用Java编程并使用Windows 7操作系统。在从用户处搜索关键字后,我使用FindItemsAdvanced调用来获取该类别下的产品列表。我想获取每个项目的属性,如颜色,袖子长度等。为此,我使用AspectHistogramContainer获取方面和值。代码片段如下:如何在ebay Finding API中使用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

想通了!我必须为GetHistogramRequest对象设置类别ID,然后使用该对象来获取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是的categoryId和advanceResponse是FindItemsByAdvanceRequestObject.But这仍然只给了每个类别下的方面。要获得该类别下每个项目的特定方面,应使用方面过滤器。我不确定如何初始化方面过滤器中每个方面的方面值,以及如何将它与响应对象相关联。有任何想法吗?