在类别中查找产品

时间:2015-05-08 15:30:58

标签: java ebay ebay-api

我需要在Ebay上找到不同类别的产品。但是当我使用教程代码时

ebay.apis.eblbasecomponents.FindProductsRequestType request = new ebay.apis.eblbasecomponents.FindProductsRequestType();
request.setCategoryID("Art");
request.setQueryKeywords("furniture");

我收到以下错误:QueryKeywords, CategoryID and ProductID cannot be used together.

那怎么办?

编辑:教程代码为here.

EDIT2:教程代码的链接显然已经死了。我继续搜索,category无法与keyword搜索一起使用,但有一个Domain可能会添加到请求中,但遗憾的是它不在API中 - 所以我不确定它是否确实可以完成。

不太好的Ebay API文档是here.

这是我的完整要求:

Shopping service = new ebay.apis.eblbasecomponents.Shopping();
ShoppingInterface port = service.getShopping();

bp = (BindingProvider) port;
bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpointURL);
 // Add the logging handler
List<Handler> handlerList = bp.getBinding().getHandlerChain();
if (handlerList == null) {
    handlerList = new ArrayList<Handler>();
}
LoggingHandler loggingHandler = new LoggingHandler();
handlerList.add(loggingHandler);
bp.getBinding().setHandlerChain(handlerList);

Map<String,Object> requestProperties = bp.getRequestContext();
Map<String, List<String>> httpHeaders = new HashMap<String, List<String>>();
requestProperties.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpointURL);
httpHeaders.put("X-EBAY-API-CALL-NAME", Collections.singletonList(CALLNAME));
httpHeaders.put("X-EBAY-API-APP-ID", Collections.singletonList(APPID));
httpHeaders.put("X-EBAY-API-VERSION", Collections.singletonList(VERSION));
requestProperties.put(MessageContext.HTTP_REQUEST_HEADERS, httpHeaders);

// initialize WS operation arguments here
FindProductsRequestType request = new FindProductsRequestType();
request.setAvailableItemsOnly(true);
request.setHideDuplicateItems(true);
request.setMaxEntries(2);
request.setPageNumber(1);
request.setQueryKeywords("Postcard");
request.setDomain("");

最后一行,应该像我需要的那样设置域,不会编译。不知道怎么解决这个问题?

编辑3:我放弃了Java API,而是直接rest。 ebay上的类别现在实际上是域名,URL如下所示:

String findProducts = "http://open.api.ebay.com/shopping?callname=FindProducts&responseencoding=XML&appid=" + APPID 
            + "&siteid=0&version=525&"
            + "&AvailableItemsOnly=true"
            + "&QueryKeywords=" + keywords
            + "&MaxEntries=10"
            + "&DomainName=" + domainName;

这样可行,但你想听一个笑话吗?似乎并非所有域都列出here,因此它并没有真正解决这个问题。 Ebay相当令人失望的工作。

1 个答案:

答案 0 :(得分:0)

根据类别中的关键字查找项目的解决方案是使用findItemsAdvanced。如果FindProducts的文档声明了这一点,可以为我节省很多时间,而不仅仅是说您可以使用关键字搜索或类别搜索。

这是API URL

http://open.api.ebay.com/shoppingcallname=findItemsAdvanced&responseencoding=XML&appid=" + APPID 
+ "&siteid=0&version=525&"
+ "&AvailableItemsOnly=true"
+ "&QueryKeywords=" + keywords
+ "&categoryId=" + categoryId                               
+ "&MaxEntries=50

完成后,如果您想获得所有顶级类别的列表,可以使用它:

http://open.api.ebay.com/Shopping?callname=GetCategoryInfo&appid=" + APPID + "&siteid=0&CategoryID=-1&version=729&IncludeSelector=ChildCategories