Amazon Product Advertising API unterschriebenen Antrag mit Java

nach vielen Stunden basteln und Lesen das gesamte internet mehrmals ich kann einfach nicht herausfinden, wie die zum signieren von Anfragen für die Verwendung mit der Product Advertising API.

Bisher habe ich es geschafft zu generieren, die ein client aus der WSDL-Datei. Ich verwendete das tutorial von Amazon für diesen. Sie können es hier finden:

Tutorial für die Generierung der web-service-client

Bisher keine Probleme. Zum testen der client-schrieb ich ein kleines Stück code. Der code soll einfach nur einige Informationen über ein Produkt. Das Produkt ist spezifiziert durch ASIN.

Code:

package client;

import com.ECS.client.jax.AWSECommerceService;
import com.ECS.client.jax.AWSECommerceServicePortType;
import com.ECS.client.jax.ItemLookup;
import com.ECS.client.jax.ItemLookupResponse;
import com.ECS.client.jax.ItemLookupRequest;

public class Client {

  public static void main(String[] args) {
    System.out.println("API Test startet");

    AWSECommerceService service = new AWSECommerceService();
    AWSECommerceServicePortType port = service.getAWSECommerceServicePort();

    ItemLookupRequest itemLookup = new ItemLookupRequest();
    itemLookup.setIdType("ASIN");
    itemLookup.getItemId().add("B000RE216U");

    ItemLookup lookup = new ItemLookup();
    lookup.setAWSAccessKeyId("<mykeyishere>");
    lookup.getRequest().add(itemLookup);

    ItemLookupResponse response = port.itemLookup(lookup);

    String r = response.toString();
    System.out.println("response: " + r);

    System.out.println("API Test stopped");
  }
}

Wie Sie sehen können gibt es keinen Teil, wo ich Unterschreiben den Antrag. Arbeitete ich meinen Weg durch eine Menge von Klassen und keine Methoden für die Unterzeichnung des Antrags.

So, wie Sie sich einen Antrag?

Ich fand tatsächlich etwas in der Dokumentation: Authentifizierung anfordern

Aber Sie verwenden nicht Ihre eigene API. Die vorgeschlagenen Lösungen sind mehr oder weniger für die manuelle Nutzung nur. So sah ich in der client-Klassen zu Sortieren, könnte ich auf die request-URL und legen Sie alle benötigten Teile für die Anfrage Anmeldung mich. Aber es gibt keine solche Methoden.

Ich hoffe mir kann jemand darauf hinweisen, was ich falsch mache.


Dies ist, was ich getan habe um das problem zu lösen. Alle der Kredit geht an Jon und die Jungs von den Amazon-Foren.

Bevor ich umreißen, was ich Tat, hier ist ein link zu dem post, der mir geholfen hat das problem zu lösen: Forum Posten auf Amazon Foren.

Ich habe die awshandlerresolver.java die Links in den post. Als ich veränderte meinen eigenen code, so sieht es wie folgt aus:

package client;

import com.ECS.client.jax.AWSECommerceService;
import com.ECS.client.jax.AWSECommerceServicePortType;
import com.ECS.client.jax.ItemLookup;
import com.ECS.client.jax.ItemLookupResponse;
import com.ECS.client.jax.ItemLookupRequest;

public class Client {

  public static void main(String[] args) {
    System.out.println("API Test startet");

    AWSECommerceService service = new AWSECommerceService();
    service.setHandlerResolver(new AwsHandlerResolver("<Secret Key>"));  //important
    AWSECommerceServicePortType port = service.getAWSECommerceServicePort();

    ItemLookupRequest itemLookup = new ItemLookupRequest();
    itemLookup.setIdType("ASIN");
    itemLookup.getItemId().add("B000RE216U");

    ItemLookup lookup = new ItemLookup();
    lookup.setAWSAccessKeyId("<Access Key>"); //important
    lookup.getRequest().add(itemLookup);

    ItemLookupResponse response = port.itemLookup(lookup);

    String r = response.toString();
    System.out.println("response: " + r);   
    System.out.println("API Test stopped");
  }
}

Die println am Ende sind mehr oder weniger nutzlos. Aber es funktioniert. Ich habe auch die WSDL-Jon verbunden zum erzeugen eines neuen webservice-client. Ich habe gerade die URLs in dem tutorial habe ich geschrieben in meiner Frage.

  • vielen Dank für die Veröffentlichung dieser Zusammenfassung nur mich gerettet etwa einem Tag Aufwand!
  • eine andere Sache: der client-side API-generation notes machen Sie es nicht explizit, dass die Entwickler von muß - Eingang der jaxws-custom.xml Datei wsimport , oder Beispiele wie Jens' wird nicht kompiliert, mit dem code den es generiert.
InformationsquelleAutor Jens | 2010-07-06
Schreibe einen Kommentar