Problème service web amazon ItemSearch java
Bonjour,
En fait j'ai un petit problème, je voudrais utiliser le service web d'amazon: ItemSearch avec un accessKey, une signature et un timestamp() en paramètre, pour une recherche avec indexSearch = Books; le problème, c'est que j'y arrive pas.
Je ne sais pas comment rajouter la signature et le timeStamp dans l'appel de itemSearch.
Est ce que quelqu'un pourrait m'aider avec un exemple de itemSearch prenant en compte la signature Hmac256. ? svp.
En fait mon code est comme ceci pour appeler itemSearch, par contre j'ai en execution un http Bad requestion 400,
MA démarche: j'ai récupéré le WSDL de AWSECommerceService.wsdl version 11-2009.
J'ai importé webService depuis WSDL pour généré les classes java.
Ensuite j'ai impémenté le code java pour appelé itemSearch comme suit:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
| import com.amazon.webservices.awsecommerceservice._2009_11_01.AWSECommerceService;
import com.amazon.webservices.awsecommerceservice._2009_11_01.AWSECommerceServicePortType;
import com.amazon.webservices.awsecommerceservice._2009_11_01.Item;
import com.amazon.webservices.awsecommerceservice._2009_11_01.ItemSearch;
import com.amazon.webservices.awsecommerceservice._2009_11_01.ItemSearchRequest;
import com.amazon.webservices.awsecommerceservice._2009_11_01.Items;
import com.amazon.webservices.awsecommerceservice._2009_11_01.OperationRequest;
import java.util.List;
import javax.xml.ws.Holder;
import java.math.BigInteger;
public class ItemSearchTester{
public static void main(String[] args)
{
ItemSearchTester ist = new ItemSearchTester();
ist.runSearch();
}
public void runSearch()
{
String awsAccessKeyID = "AKIAJ4NRPN32C5ZDEDNQ";
// Set the service:
AWSECommerceService service = new AWSECommerceService();
//Set the service port:
AWSECommerceServicePortType port = service.getAWSECommerceServicePort();
//A new ItemSearch
ItemSearch itemSearch = new ItemSearch();
itemSearch.setAWSAccessKeyId("AKIAJ4NRPN32C5ZDEDNQ");
//A new ItemSearchRequest which is part of the ItemSearch
ItemSearchRequest searchRequest = new ItemSearchRequest();
java.util.List<ItemSearchRequest> list = itemSearch.getRequest();
list.add(searchRequest);
/*Set up the values of the ItemSearchRequest */
searchRequest.setSearchIndex("Books");
searchRequest.setAuthor("");
searchRequest.setKeywords("Harry+Potter");
// SearchRequest.s//.setVersion("2009-11-01");
itemSearch.getRequest().add(searchRequest);
java.util.List<String> responseGroup = searchRequest.getResponseGroup() ;
responseGroup.add("Images");
responseGroup.add("ItemAttributes");
responseGroup.add("Large");
Holder<OperationRequest> operationrequest = new Holder<OperationRequest>();
Holder<java.util.List<Items>> items = new Holder<java.util.List<Items>> ();
port.itemSearch("",awsAccessKeyID,awsAccessKeyID,"","","",searchRequest,itemSearch.getRequest(),operationrequest,items);
//search.getRequest()
java.util.List<Items> result = items.value;
BigInteger totalPages = result.get(0).getTotalResults() ;
System.out.println(totalPages);
for (int i = 0; i < result.get(0).getItem().size(); ++i)
{
Item myItem = result.get(0).getItem().get(i) ;
System.out.print(myItem.getASIN()) ;
System.out.print( ", " ) ;
System.out.println (myItem.getDetailPageURL());
System.out.print( ", " ) ;
System.out.println (myItem.getSmallImage() == null ? "" : myItem.getSmallImage().getURL());
}
}
} |
Je compte sur votre aide, Merci.
Il me faut rajouter le paramètre signature et timeStamp et que ca marche.
Cordialement.
koko1986