Autor Beitrag
Andreas#
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mi 15.09.10 16:30 
Hallo,
ich wollte mich mal etwas in WebServices einarbeiten und hatte mir dafür die Amazon-Dienste ausgesucht.

Auf docs.amazonwebservic...vice/2010-09-01/GSG/ unter "Making Requests" und dann auf "Implementing an Product Advertising API Request" auf der linken Seite habe ich dann BeispielCode für den Zugriff gefunden, den ich an sich nur 1:1 umgesetzt habe:

ausblenden volle Höhe C#-Quelltext
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:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Amazon_Zugriff4.com.amazon.webservices;


namespace Amazon_Zugriff4
{
    class Program
    {
      static void Main(string[] args)
      {
            // Set default args if two are not supplied
      if (args.Length != 2)
      {
        args = new string[] { "DVD""Matrix" };
      }

      // Get searchIndex and keywords from the command line
      string searchIndex = args[0];
      string keywords = args[1];

      // Create an instance of the Product Advertising API service
      AWSECommerceService ecs = new AWSECommerceService();

      // Create ItemSearch wrapper
      ItemSearch search = new ItemSearch();
      search.AssociateTag = "xxxxxxxxxxxx";
      search.AWSAccessKeyId = "YYYYYYYYYYYYYY";
     // search.Version = "2010-06-01";

      // Create a request object
      ItemSearchRequest request = new ItemSearchRequest();

      // Fill request object with request parameters
      request.ResponseGroup = new string[] { "ItemAttributes" };
      
      // Set SearchIndex and Keywords
      request.SearchIndex = searchIndex;
      request.Keywords = keywords;

      // Set the request on the search wrapper
      search.Request = new ItemSearchRequest[] { request };
     

      try
      {
          //Send the request and store the response
          //in response
          ItemSearchResponse response =
            ecs.ItemSearch(search);
      }
      catch (Exception e)
      {
          Console.WriteLine("Wieder ein Fehler: {0}", e.Message);
      }

     }

    }
}

Über "Add Web Reference" im VS 2008 habe ich dann auf Basis der Beschreibung: webservices.amazon.c...CommerceService.wsdl
die entsprechenden Klassen generieren lassen.
Im Beispielcode musste ich allerdings
Zitat:
search.Version = "2010-06-01";
auskommentieren, da ich sonst einen Compilerfehler erhalten hätte. Für "search.AWSAccessKeyId" habe ich meine Access Key ID und für "search.AWSAccessKeyId" meine Secret Access Key angegeben - wobei mir letzteres komisch vorkommt.

Jetzt erhalte ich aber immer beim ausführen den Fehler:
"Wieder ein Fehler: The request must contain the parameter Signature."

Über google habe ich herausgefunden, dass Amazon mittlerweile eine Signatur verlangt, die sich über die Parameter, den Public und Secret Key berechnet. Für mich stellt sich jetzt die Frage wie ich das hier einbauen kann - worunter müsste ich das denn angeben?
Zudem steht auf der Seite des Beispielcodes "Product Advertising API Getting Started Guide (API Version 2010-06-01)" - an sich müsste der Code doch dann laufen - schließlich ist er für die API von 2010 geschrieben worden, oder nicht?

Auf jeden Fall schonmal vielen Dank für eine Antwort,

viele Grüße

Andreas