以编程方式运行高级Ebay搜索查询(Java)

时间:2014-10-09 07:11:08

标签: java ebay ebay-api

在E-Bay网站上,您可以搜索e。 G。主色为银色的手镯(见下面的截图)。

Screenshot

是否可以通过编程方式(通过eBay Search API)运行此类查询(找到带有主色银的最新手镯)?如果是 - 怎么样?

我看了findItemsAdvanced,但没有找到任何颜色搜索的参考。

3 个答案:

答案 0 :(得分:2)

您可能想要使用AspectFilters。可以在上一个查询中找到该输入(如文档中所述。请参阅aspectHistogrammContainer

答案 1 :(得分:1)

使用Finding API优化搜索是通过 Aspect Filters 完成的,defined in the documentation为:

  

方面是众所周知的,标准化的物品特征。对于   例如,"屏幕尺寸," "处理器类型,"和#34;处理器速度"可以   是笔记本电脑的一部分。各方面的不同可能会有所不同   项目。例如,笔记本电脑的各个方面与那些不同   女装连衣裙(女装连衣裙的方面可能包括"袖子   风格," "着装长度,"和"尺寸")。

执行搜索是一个两步过程。

  1. 确定您要搜索的类别的哪些方面可用。
  2. 选择要使用的方面,并将其作为过滤器集成到搜索请求中。
  3. 以下示例使用易趣提供的Finding Kit作为其Java SDK的一部分。

    第一个示例显示了如何获取可用的方面。这是通过getHistograms操作实现的。在本例中,我们将使用 Jewelry&手表>时尚饰品>戒指(67681)可在美国eBay网站上找到。

    import java.util.List; 
    import com.ebay.services.client.ClientConfig; 
    import com.ebay.services.client.FindingServiceClientFactory; 
    import com.ebay.services.finding.*; 
    
    public class GetHistograms { 
        public static void main(String[] args) { 
            try { 
                ClientConfig config = new ClientConfig(); 
                config.setApplicationId("<YOUR EBAY APP ID>"); 
    
                FindingServicePortType serviceClient = FindingServiceClientFactory.getServiceClient(config); 
    
                GetHistogramsRequest request = new GetHistogramsRequest(); 
    
                request.setCategoryId("67681");
    
                GetHistogramsResponse result = serviceClient.getHistograms(request); 
    
                AspectHistogramContainer aspectHistogramContainer = result.getAspectHistogramContainer();
                List<Aspect> aspects = aspectHistogramContainer.getAspect();
                for(Aspect aspect : aspects) {
                    System.out.println("* " + aspect.getName() + " *");
                    List<AspectValueHistogram> values = aspect.getValueHistogram();
                    for(AspectValueHistogram value : values) {
                        System.out.println(value.getValueName());
                    }
                }
            } catch (Exception ex) { 
    
            } 
        } 
    }   
    

    每个类别可以有多个方面,包括名称,例如颜色,以及多个值,例如红色白色,< EM>蓝。此代码生成的输出示例如下所示。

    • 金属纯度
    • 10K
    • 14K
    • 18K
    • 主石
    • No Stone
    • 鲍鱼
    • 玛瑙
    • 主要颜色
    • 水族
    • 黑色

    getHistograms 返回的名称和值现在可以用作findItemsAdvanced操作中的过滤器。对于第二个示例,我们将使用 Brand Main Color 方面。此示例也使用与第一个相同的类别。

    import java.util.List; 
    import com.ebay.services.client.ClientConfig; 
    import com.ebay.services.client.FindingServiceClientFactory; 
    import com.ebay.services.finding.*; 
    
    public class FindItem { 
        public static void main(String[] args) { 
            try { 
                ClientConfig config = new ClientConfig(); 
                config.setApplicationId("<YOUR EBAY APP ID>"); 
    
                FindingServicePortType serviceClient = FindingServiceClientFactory.getServiceClient(config); 
    
                FindItemsAdvancedRequest request = new FindItemsAdvancedRequest(); 
    
                request.getCategoryId().add("67681");
    
                AspectFilter aspectFilter = new AspectFilter();
                aspectFilter.setAspectName("Brand");
                aspectFilter.getAspectValueName().add("Paula Abdul");
                aspectFilter.getAspectValueName().add("Tiffany");
                aspectFilter.getAspectValueName().add("Tommy Hilfiger");      
                request.getAspectFilter().add(aspectFilter);
    
                aspectFilter = new AspectFilter();
                aspectFilter.setAspectName("Main Color");
                aspectFilter.getAspectValueName().add("Gold");
                aspectFilter.getAspectValueName().add("Silver");
                request.getAspectFilter().add(aspectFilter);
    
                PaginationInput pi = new PaginationInput(); 
                pi.setEntriesPerPage(2); request.setPaginationInput(pi); 
    
                FindItemsAdvancedResponse result = serviceClient.findItemsAdvanced(request); 
    
                System.out.println("Found " + result.getSearchResult().getCount() + " items." ); 
                List<SearchItem> items = result.getSearchResult().getItem(); 
    
                for(SearchItem item : items) { 
                    System.out.println(item.getTitle()); 
                } 
            } catch (Exception ex) { 
    
            } 
        } 
    }
    

答案 2 :(得分:0)

VariationType似乎能够做到这一点。