Amazon产品广告API-503使用Java/SOAP进行批量项目查找时出错
我对批量项目查找有问题 com.sun.xml.internal.ws.client.ClientTransportException:Amazon产品广告API-503使用Java/SOAP进行批量项目查找时出错,java,amazon-web-services,soap,amazon,amazon-product-api,Java,Amazon Web Services,Soap,Amazon,Amazon Product Api,我对批量项目查找有问题 com.sun.xml.internal.ws.client.ClientTransportException: List<String> resGroup = new ArrayList<String>(); resGroup.add("Offers"); resGroup.add("Images"); resGroup.add("ItemAttributes"); resGroup.add("ItemId
List<String> resGroup = new ArrayList<String>();
resGroup.add("Offers");
resGroup.add("Images");
resGroup.add("ItemAttributes");
resGroup.add("ItemIds");
ItemLookupRequest request = new ItemLookupRequest();
request.getItemId().addAll(asins); //asins is an ArrayList<String> of 10 asins
request.setMerchantId(merchant);
request.setCondition(condition);
request.getResponseGroup().addAll(resGroup);
ItemLookup itemLookup = new ItemLookup();
itemLookup.setAWSAccessKeyId(AWS_ACCESS_KEY);
itemLookup.setAssociateTag(ASSOC_TAGS.get("en-GB"));
itemLookup.getRequest().add(request);
response = port.itemLookup(itemLookup); **<-- This line throws the Exception**
com.sun.xml.internal.ws.client.ClientTransportException:服务器发送了HTTP状态代码503:服务不可用
位于com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.checkStatusCode(HttpTransportPipe.java:296)
在com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.createResponsePacket(HttpTransportPipe.java:245)上
位于com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:203)
在com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:122)上
位于com.sun.xml.internal.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:95)
位于com.sun.xml.internal.ws.api.pipe.Fiber.\uuuu-doRun(Fiber.java:626)
位于com.sun.xml.internal.ws.api.pipe.Fiber.\u-doRun(Fiber.java:585)
位于com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Fiber.java:570)
位于com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Fiber.java:467)
位于com.sun.xml.internal.ws.client.Stub.process(Stub.java:308)
位于com.sun.xml.internal.ws.client.sei.SEIStub.doProcess(SEIStub.java:146)
位于com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:98)
位于com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:78)
位于com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:129)
位于$Proxy29.itemLookup(未知源)
此项查找是通过以下请求进行的:
List<String> resGroup = new ArrayList<String>();
resGroup.add("Offers");
resGroup.add("Images");
resGroup.add("ItemAttributes");
resGroup.add("ItemIds");
ItemLookupRequest request = new ItemLookupRequest();
request.getItemId().addAll(asins); //asins is an ArrayList<String> of 10 asins
request.setMerchantId(merchant);
request.setCondition(condition);
request.getResponseGroup().addAll(resGroup);
ItemLookup itemLookup = new ItemLookup();
itemLookup.setAWSAccessKeyId(AWS_ACCESS_KEY);
itemLookup.setAssociateTag(ASSOC_TAGS.get("en-GB"));
itemLookup.getRequest().add(request);
response = port.itemLookup(itemLookup); **<-- This line throws the Exception**
List resGroup=new ArrayList();
添加(“要约”);
添加(“图像”);
添加(“ItemAttributes”);
resGroup.add(“ItemIds”);
ItemLookupRequest请求=新建ItemLookupRequest();
request.getItemId().addAll(asins)//asins是由10个asins组成的ArrayList
请求:setMerchantId(商户);
请求。设置条件(条件);
request.getResponseGroup().addAll(resGroup);
ItemLookup ItemLookup=新建ItemLookup();
setAWSAccessKeyId(AWS\u访问密钥);
setAssociateTag(ASSOC_TAGS.get(“en GB”));
itemLookup.getRequest().add(请求);
响应=端口.itemLookup(itemLookup)** 我也遇到了503个错误,但是当我重复请求时,它可能会成功。试试这个:
int retries = 0;
while (retries < 3){
Thread.sleep(1500 * retries);
try{
response = port.itemLookup(itemLookup);
break;
}
catch(Exception ex){ }
retries++;
}
int重试次数=0;
while(重试次数<3次){
线程睡眠(1500*次重试);
试一试{
响应=端口.itemLookup(itemLookup);
打破
}
捕获(例外情况除外){}
重试++;
}
希望这能有所帮助。我也遇到503个错误,但当我重复请求时,可能会成功。试试这个:
int retries = 0;
while (retries < 3){
Thread.sleep(1500 * retries);
try{
response = port.itemLookup(itemLookup);
break;
}
catch(Exception ex){ }
retries++;
}
int重试次数=0;
while(重试次数<3次){
线程睡眠(1500*次重试);
试一试{
响应=端口.itemLookup(itemLookup);
打破
}
捕获(例外情况除外){}
重试++;
}
希望这有帮助