Amazon.com Web Services 2.0
Geschrieben von: Christoph Wille Die Landschaft der verfügbaren Web Services wird langsam bunter - neben den Google Web APIs hat auch ein weiterer "Großer" des Internets Web Services für uns Programmierer im Angebot - Amazon.com. Im heutigen Artikel werden wir uns mit der Suche nach Büchern beschäftigen, der gezeigte Code ist leicht auf andere Angebote Amazons umlegbar. Generell unterstützen die Amazon.com Web Services zwei große Bereiche: das Anzeigen von Produkten, sowie das Verwalten von Shopping Carts. Bevor man die Services verwenden kann, muß man sich unter http://www.amazon.com/webservices registrieren, und sollte auch das entsprechende Developer Kit downloaden: Im Developer Kit mit dabei ist die leider etwas schwachbrüstige Dokumentation. Viele Dinge muß man sich mit Hilfe des VS.NET Class Browsers beziehungsweise der Java Samples zusammensuchen - es steht zu hoffen, daß in Zukunft diese Schwachstellen beseitigt werden. Erstellen der ProxyklassenObwohl Visual Studio.NET das Erstellen von Web Service Proxies hervorragend beherrscht, ist es von Zeit zu Zeit nicht schlecht, mit den Tools des .NET SDK's zu üben - denn die Kommandozeilenclients des SDK's können oft mehr als die Wizards des VS.NET. Hier ist die Befehlszeile zur Generierung eines C# Proxy's: wsdl /language:C# /namespace:Amazon.WebServices /protocol:SOAP /out:amazonws.cs http://soap.amazon.com/schemas2/AmazonWebServices.wsdl Damit erhalten wir den Proxy in die Datei amazonws.cs generiert, und diese Datei können wir ab sofort in alle unsere Projekte einbinden. Eine Applikation zur BuchsucheZur Demonstration wie die Amazon.com Web Services funktionieren, erstellen wir uns eine Applikation mit der man nach Büchern suchen kann, und zwar mittels Schlüsselwort. Die gefundenen Resultate sollen in einer ListView ausgegeben werden: Die ListView besitzt drei Spalten - der Grund hierfür ist, daß wir bei unserer Suchanfrage nur vier Werte immer erhalten werden:
Falls verfügbar, bekommen wir auch folgende Werte geliefert:
Daher habe ich mich für diese kleine Applikation auf die sichere Seite begeben, und stelle nur das dar, was mir auch immer sicher vom Web Service zur Verfügung gestellt wird. Die einzigen optionalen Daten die die Applikation verwendet ist ImageUrlMedium, um den Cover des Buches nachzuladen, so er verfügbar ist (wird in der PictureBox unterhalb der ListView dargestellt). Beginnen wir aber mit dem Code, der hinter dem Suchen-Button liegt: private void btnSearch_Click(object sender, System.EventArgs e) { AmazonSearchService searchService = new AmazonSearchService(); KeywordRequest keywordReq = new KeywordRequest(); keywordReq.devtag = txtToken.Text; // Token keywordReq.keyword = txtKeyword.Text; // Suchbegriff keywordReq.type = "lite"; // Suchart keywordReq.sort = "+salesrank"; // Art der Sortierung keywordReq.mode = "books"; // Suchbereich keywordReq.tag = "alphasierrapapa"; // Amazon Associate ID ProductInfo pi = searchService.KeywordSearchRequest(keywordReq); lvFoundItems.BeginUpdate(); lvFoundItems.Items.Clear(); // Anzahl der Records - kann man mit der KeywordRequest.page Eigenschaft // zum Pagen durch die Resultate verwenden labelTotalRecords.Text = "Total records: " + pi.TotalResults.ToString(); for (int i=0;i < pi.Details.Length; i++) { ListViewItem lvi = new ListViewItem(); lvi.Text = pi.Details[i].Url; lvi.SubItems.Add(pi.Details[i].Asin); lvi.SubItems.Add(pi.Details[i].ProductName); lvi.SubItems.Add(pi.Details[i].ImageUrlMedium); lvFoundItems.Items.Add(lvi); } lvFoundItems.EndUpdate(); } Alle Suchanfragen werden via AmazonSearchService abgewickelt, die Variation dabei ist die Methode (hier KeywordSearchRequest) sowie das zugehörige Suchrequest-Objekt (in diesem Beispiel KeywordRequest). Die Datenfelder sind in allen Fällen einfache Strings, die Resultate werden im ProductInfo.Details Array geliefert. Wie man sieht, ist die Suche und das Darstellen der Resultate kein Problem. Um der ganzen Applikation etwas mehr "Coolness" zu verleihen, wollen wir noch das Bild des Covers darstellen, wie im folgenden Screenshot gezeigt: Dazu müssen wir das ItemActivate Event behandeln. In diesem laden wir mit Hilfe der WebRequest und WebResponse Klassen das Bild vom Internet, und stellen es dann in der PictureBox dar - dank Streams im .NET Framework kein großes Problem wie der folgende Sourcecode zeigt: private void lvFoundItems_ItemActivate(object sender, System.EventArgs e) { if (lvFoundItems.SelectedItems.Count == 0) return; ListViewItem lvi = lvFoundItems.SelectedItems[0]; string strImageUrl = lvi.SubItems[3].Text; if ("" == strImageUrl) return; WebRequest wrq = WebRequest.Create(strImageUrl); WebResponse wrp = wrq.GetResponse(); Bitmap bmp = new Bitmap(wrp.GetResponseStream()); picbox.Image = bmp; picbox.Refresh(); } Bei einer Webapplikation kann man direkt ein Image-Tag bauen, wodurch das Bild dann vom Client nachgeladen wird. Aber selbst programmiert macht es doch mehr Spaß, oder? SchlußbemerkungDie Amazon.com Web Services sind ein weiterer Web Service den man sinnvoll in seine eigene Web oder Windows Anwendung einbauen kann - angefangen von einer einfachen Buchsuche wie heute vorgestellt, bis hin zu komplexen Anwendungen, zB der automatisierte Einkauf von Büchern über eine Intranet-Verwaltungsapplikation. Download des CodesKlicken Sie hier, um den Download zu starten. Verwandte Artikel
Programmieren mit den Google Web APIs Beta 2 Links zu anderen SitesWenn Sie jetzt Fragen haben...Wenn Sie Fragen rund um die in diesem Artikel vorgestellte Technologie haben, dann schauen Sie einfach bei uns in den Community Foren der deutschen .NET Community vorbei. Die Teilnehmer helfen Ihnen gerne, wenn Sie sich zur im Artikel vorgestellten Technologie weiterbilden möchten. Eine weitere sehr hilfreiche Resource ist das deutsche ASP.NET Wiki, das als zentrale Anlaufstelle für Tips, Tricks, Know How und alles Nützliche was man in seinem Alltag als (ASP).NET-Entwickler so braucht und entdeckt gedacht ist. Haben Sie Fragen die sich direkt auf den Inhalt des Artikels beziehen, dann schreiben Sie dem Autor! Unsere Autoren freuen sich über Feedback zu ihren Artikeln. Ein einfacher Klick auf die Autor kontaktieren Schaltfläche (weiter unten) und schon haben Sie ein für diesen Artikel personalisiertes Anfrageformular.
Und zu guter Letzt möchten wir Sie bitten, den Artikel zu bewerten. Damit helfen Sie uns, die Qualität der Artikel zu verbessern - und anderen Lesern bei der Auswahl der Artikel, die sie lesen sollten.
©2000-2006 AspHeute.com |