Java SOAP-产品广告API-响应为空
我已经创建了对amazon产品API的搜索请求,但其响应为空。 你能告诉我我的代码有什么问题吗 代码:Java SOAP-产品广告API-响应为空,java,soap,amazon,amazon-product-api,Java,Soap,Amazon,Amazon Product Api,我已经创建了对amazon产品API的搜索请求,但其响应为空。 你能告诉我我的代码有什么问题吗 代码: 字符串awsAccessKeyID=“”; 字符串测试=”; AWSECommerceService service=新的AWSECommerceService(); service.setHandlerResolver(新的AwsHandlerResolver(“”); AWSECommerceServicePortType端口=服务。getAWSECommerceServicePort()
字符串awsAccessKeyID=“”;
字符串测试=”;
AWSECommerceService service=新的AWSECommerceService();
service.setHandlerResolver(新的AwsHandlerResolver(“”);
AWSECommerceServicePortType端口=服务。getAWSECommerceServicePort();
ItemSearch ItemSearch=新建ItemSearch();
setAWSAccessKeyId(awsAccessKeyID);
ItemSearch.setAssociateTag(测试);
ItemSearchRequest SearchRequest=新的ItemSearchRequest();
java.util.List List=ItemSearch.getRequest();
添加(搜索请求);
SearchRequest.setSearchIndex(“全部”);
SearchRequest.setKeywords(“nas”);
ItemSearch.getRequest().add(SearchRequest);
ItemSearch.setMarketplaceDomain(“https://ecs.amazonaws.de/onca/xml?Service=AWSECommerceService");
SearchRequest.getResponseGroup().add(“大”);
支架操作请求=新支架();
持有人项目=新持有人();
port.itemSearch(itemSearch.getMarketplaceDomain(),itemSearch.getAWSAccessKeyId(),itemSearch.getAssociateTag(),itemSearch.getXMLEscaping(),“True”,itemSearch.getShared(),itemSearch.getRequest(),operationrequest,items);
java.util.List结果=items.value;
系统输出打印项次(结果);
结果集仍然为空,但没有发生错误。…我发现了我犯的错误 我创建的源代码没有AmazonWSDL所需的JAXB绑定条件。 您需要包含以下限制的binding.xml文件
<jaxws:bindings wsdlLocation="http://webservices.amazon.com/AWSECommerceService/AWSECommerceService.wsdl" xmlns:jaxws="http://java.sun.com/xml/ns/jaxws">
<jaxws:enableWrapperStyle>false</jaxws:enableWrapperStyle>
</jaxws:bindings>
假的
在pom.xml中,我为构建过程创建了以下部分
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>1.10</version>
<executions>
<execution>
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<wsdlUrls>
<wsdlUrl>http://webservices.amazon.com/AWSECommerceService/AWSECommerceService.wsdl</wsdlUrl>
</wsdlUrls>
<sourceDestDir>target/generated-sources/apt</sourceDestDir>
<bindingFiles>
<bindingFile>../../conf/binding.xml</bindingFile>
</bindingFiles>
</configuration>
<id>wsimport-generate-AWSECommerceService</id>
<phase>generate-sources</phase>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>javax.xml</groupId>
<artifactId>webservices-api</artifactId>
<version>1.4</version>
</dependency>
</dependencies>
</plugin>
org.codehaus.mojo
jaxws-maven插件
1.10
wsimport
http://webservices.amazon.com/AWSECommerceService/AWSECommerceService.wsdl
目标/生成源/apt
../../conf/binding.xml
wsimport生成AWSECommerceService
生成源
javax.xml
webservicesapi
1.4
在重新创建源之后,我将请求更改为以下内容:
String awsAccessKeyID = "<AWS-ACCESS-KEY>";
String test = "<ASSOCIATE-TAG>";
AWSECommerceService service = new AWSECommerceService();
service.setHandlerResolver(new AwsHandlerResolver("<SECRET-KEY>"));
AWSECommerceServicePortType port = service.getAWSECommerceServicePort();
ItemSearchRequest itemRequest = new ItemSearchRequest();
// Fill in the request object:
itemRequest.setSearchIndex("Electronics");
itemRequest.setKeywords("NAS");
itemRequest.getResponseGroup().add("ItemAttributes");
itemRequest.setItemPage(BigInteger.valueOf(1L));
ItemSearch ItemElement = new ItemSearch();
ItemElement.setAWSAccessKeyId(awsAccessKeyID);
ItemElement.setAssociateTag(test);
ItemElement.getRequest().add(itemRequest);
ItemSearchResponse response = port.itemSearch(ItemElement);
for (Items itemList : response.getItems()) {
for (Item itemObj : itemList.getItem()) {
System.out.println(itemObj.getItemAttributes().getBrand());
System.out.println(itemObj.getItemAttributes().getEAN());
}
}
字符串awsAccessKeyID=“”;
字符串测试=”;
AWSECommerceService service=新的AWSECommerceService();
service.setHandlerResolver(新的AwsHandlerResolver(“”);
AWSECommerceServicePortType端口=服务。getAWSECommerceServicePort();
ItemSearchRequest itemRequest=新的ItemSearchRequest();
//填写请求对象:
itemRequest.setSearchIndex(“电子”);
itemRequest.setKeywords(“NAS”);
itemRequest.getResponseGroup().add(“ItemAttributes”);
setItemPage(BigInteger.valueOf(1L));
ItemSearch ItemElement=新建ItemSearch();
setAWSAccessKeyId(awsAccessKeyID);
ItemElement.setAssociateTag(测试);
ItemElement.getRequest().add(itemRequest);
ItemSearchResponse=port.itemSearch(ItemElement);
对于(Items itemList:response.getItems()){
对于(Item itemObj:itemList.getItem()){
System.out.println(itemObj.getItemAttributes().getBrand());
System.out.println(itemObj.getitemtattributes().getEAN());
}
}
您如何知道没有发生错误?请求过程中没有异常。并且您知道结果必须返回大小大于0的列表?顺便说一句:当然port.itemSearch
是void类型(我不知道amazonapi)?正如您所看到的,结果变量是holder类型,将保存结果。此请求应查找名称包含“nas”的所有搜索索引(所有类别)中的所有产品。我确信有几种产品与此项产品相匹配。。。。
String awsAccessKeyID = "<AWS-ACCESS-KEY>";
String test = "<ASSOCIATE-TAG>";
AWSECommerceService service = new AWSECommerceService();
service.setHandlerResolver(new AwsHandlerResolver("<SECRET-KEY>"));
AWSECommerceServicePortType port = service.getAWSECommerceServicePort();
ItemSearchRequest itemRequest = new ItemSearchRequest();
// Fill in the request object:
itemRequest.setSearchIndex("Electronics");
itemRequest.setKeywords("NAS");
itemRequest.getResponseGroup().add("ItemAttributes");
itemRequest.setItemPage(BigInteger.valueOf(1L));
ItemSearch ItemElement = new ItemSearch();
ItemElement.setAWSAccessKeyId(awsAccessKeyID);
ItemElement.setAssociateTag(test);
ItemElement.getRequest().add(itemRequest);
ItemSearchResponse response = port.itemSearch(ItemElement);
for (Items itemList : response.getItems()) {
for (Item itemObj : itemList.getItem()) {
System.out.println(itemObj.getItemAttributes().getBrand());
System.out.println(itemObj.getItemAttributes().getEAN());
}
}