2013-03-15 56 views
2

我尝试在我的数据库中获得ASIN电影,尝试通过EAN进行匹配。我创建简单的Java类与亚马逊连接:在一个亚马逊请求中可以发送多少项目?

AWSECommerceServiceservice = new AWSECommerceService(); 
service.setHandlerResolver(new AwsHandlerResolver(AMAZON_SECRET_KEY)); 
AWSECommerceServicePortType port = service.getAWSECommerceServicePortDE(); 
Holder<OperationRequest> operationrequest = new Holder<OperationRequest>(); 
failedItem = 0; 
doneItem = 0; 

ItemLookup lookup = new ItemLookup(); 
lookup.setAWSAccessKeyId(AMAZON_ACCESS_ID); 
lookup.setAssociateTag(ASSOCIATE_TAG); 
ItemLookupRequest request = new ItemLookupRequest(); 
request.getResponseGroup().add("ItemAttributes"); 
request.setSearchIndex("Video"); 

request.setIdType("EAN"); 
//Here iterates on my amazon-movies object 
    for (AmazonSIdN i : amazonItems) { 
     request.getItemId().add(i.getEan()); 
     if (request.getItemId().size() % 10 == 0) { //numbers of items in request 
      LOG.info("Request size = " + request.getItemId().size()); 
       break; 
      } 
    } 
Holder<List<Items>> items = new Holder<List<Items>>(); 
lookup.getRequest().add(request); 

port.itemLookup(lookup.getMarketplaceDomain(), lookup.getAWSAccessKeyId(), 
lookup.getAssociateTag(),lookup.getXMLEscaping(), lookup.getValidate(), 
lookup.getShared(), lookup.getRequest(),operationrequest, items); 

     List<Items> result = items.value; 
     for (int k = 0; k < result.get(0).getItem().size(); ++k) { 
      Item i = result.get(0).getItem().get(k); 
      //do something with item 

     } 

这是工作,但有一点是很奇怪的我。当这条线:

if (request.getItemId().size() % 10 == 0) { //numbers of items in request 

我用的40 000,而不是10 WS收益:

The server sent HTTP status code 413: Request Entity Too Large 

这是可以理解的。但是,当我把数大于10个WS不返回ENY错误,但结果没有项目:

enter image description here

谁能告诉我是什么a'm做错了还是什么我也不曾忘记设置?有什么建议?

回答

1

我找到了答案,所以我把它放在这里,也许有人会在将来节省一些时间。 在亚马逊ItemLookup documentatnion写的是:

项目Id - 一个或多个(最多十)正整数唯一标识一个项目。数字的含义由IdType指定。也就是说,如果IdType是ASIN,则ItemId值是ASIN。如果ItemId是ASIN,则不能在请求中指定搜索索引。

类型:String

默认值:无

约束条件:必须是一个有效的项目ID。对于多个ID,请使用最多包含10个ID的逗号分隔列表。