Java SOAP-产品广告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()

我已经创建了对amazon产品API的搜索请求,但其响应为空。 你能告诉我我的代码有什么问题吗

代码:

字符串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());
    }
}