2012-09-23 69 views
0

我已經創建了一個搜索請求到amazon產品API,但它的響應是空的。 你能給我一個提示我的代碼有什麼問題嗎?Java SOAP - 產品廣告API - 響應空

代碼:

String awsAccessKeyID = "<AWS-KEY>"; 
String test = "<ASSOCIATE-TAG>"; 

AWSECommerceService service = new AWSECommerceService(); 
service.setHandlerResolver(new AwsHandlerResolver("<SECRET-KEY>")); 

AWSECommerceServicePortType port = service.getAWSECommerceServicePort(); 

ItemSearch ItemSearch = new ItemSearch(); 

ItemSearch.setAWSAccessKeyId(awsAccessKeyID); 
ItemSearch.setAssociateTag(test); 

ItemSearchRequest SearchRequest = new ItemSearchRequest(); 

java.util.List<ItemSearchRequest> list = ItemSearch.getRequest(); 

list.add(SearchRequest); 

SearchRequest.setSearchIndex("All"); 


SearchRequest.setKeywords("nas"); 

ItemSearch.getRequest().add(SearchRequest); 
ItemSearch.setMarketplaceDomain("https://ecs.amazonaws.de/onca/xml?Service=AWSECommerceService"); 


SearchRequest.getResponseGroup().add("Large"); 

Holder<OperationRequest> operationrequest = new Holder<OperationRequest>(); 

Holder<java.util.List<Items>> items = new Holder<java.util.List<Items>>(); 

port.itemSearch(ItemSearch.getMarketplaceDomain(), ItemSearch.getAWSAccessKeyId(), ItemSearch.getAssociateTag(), ItemSearch.getXMLEscaping(), "True", ItemSearch.getShared(), ItemSearch.getRequest(), operationrequest, items); 

java.util.List<Items> result = items.value; 
System.out.println(result); 

中的ResultSet仍然是空的,但沒有錯誤發生....

+0

如何知道沒有錯誤發生? – home

+0

請求期間沒有例外。 – user846604

+0

你知道結果必須返回一個大小> 0的列表嗎?順便說一句:確定'port.itemSearch'是void類型(我不知道亞馬遜API)? – home

回答

2

我發現我犯了這個錯誤。

我創建了沒有amazon wsdl所需的JAXB綁定條件的源代碼。 需要含有下列限制

<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一個binding.xml文件I創建了以下部分的建立過程

<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> 

來源娛樂後我改變請求如下:

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()); 
    } 
} 
相關問題