HowTo: eBay API (Suchen mit eBay…)

Willkommen zurück zum HowTo über die eBay API.

Sobald die Grundvoraussetzungen für die API Nutzung erfüllt sind, kann es auch schon direkt losgehen.

Unser Ziel ist es, eine Suchanfrage an eBay zu schicken.

eBay API in Visual Studio nutzbar machen

Um nun die eBay API auch im Visual Studio komfortabel zu nutzen, fügt man eine “Web Referenz” dem Projekt hinzu:

-> Projektmappen Explorer -> Web References *Rechtsklick* -> Webverweis hinzufügen: https://api.ebay.com/wsapi

Diese Adresse enthält die Schnittstellendefinition von eBay. Wenn Visual Studio vielleicht meckert, dass bestimmte Elemente in der Beschreibung falsch sind helfen zwei Sachen:

  • Nochmal versuchen
  • Ignorieren

Ich weiß leider nicht mehr genau woran es lag, aber bei mir hat es 5 Versuche gedauert, bis mein Visual Studio 2005 es komplett geschluckt hatte. Falls dann immer noch Fehler bei euch auftreten: Einfach ignorieren – seltsamerweise funktioniert es doch und sie verschwinden irgendwann.

Nachdem man das geschafft ist, kann man im Klassenexplorer sich mal die API anschauen, wie man feststellt ist es doch sehr umfangreich. Keine Angst, man braucht niemals alles – jedenfalls erstmal nicht ;)

Die Suchanfrage
Da man für jede Suchanfrage die 3 Keys und das Token eingeben muss, habe ich mir eine kleine Klasse geschrieben, die das übernimmt:

public class InterfaceService
{
   #region Properties
   private eBayAPIInterfaceService eBayService = new eBayAPIInterfaceService();       

   public eBayAPIInterfaceService EBayService
    {
    get { return eBayService; }
    set { eBayService = value; }
   }       

#endregion       

public InterfaceService(string callName)
{
string endpoint = "https://api.ebay.com/wsapi";
string siteId = "77" // Deutsche eBay Seitestring
appId = "" // AppIDstring
devId = "" // DevIDstring
certId = "" // CertIdstring
version = "495" // API Version
string eBayAuthToken = ""  // Token       

this.EBayService.Url = endpoint +
                             "?callname="
                              + callName+
                              "&siteid=" + siteId+
                              "&appid=" + appId+
                              "&version=" + version+
                              "&routing=default"       

this.EBayService.RequesterCredentials = new CustomSecurityHeaderType();
this.EBayService.RequesterCredentials.Credentials = new UserIdPasswordType();
this.EBayService.RequesterCredentials.Credentials.AppId = appId;
this.EBayService.RequesterCredentials.Credentials.DevId = devId;
this.EBayService.RequesterCredentials.Credentials.AuthCert = certId;
this.EBayService.RequesterCredentials.eBayAuthToken = eBayAuthToken;
}
}

So… eine sehr einfache Klasse, welche aber (jedenfalls mir) das eBay Leben erleichtert hat. Ich hoffe der Code wird hier nicht arg zu sehr vermurkst durch den Blog.

So… nachdem man das gemacht hat, wollen wir aber direkt mal eine Suchanfrage durchführen (in einem oldschool Konsolenprogramm):

InterfaceService MyeBay = new InterfaceService("GetSearchResults");       

GetSearchResultsRequestType SearchRequest = new GetSearchResultsRequestType();
SearchRequest.Query = "Schrank";
SearchRequest.Version = "495";
   try
   {
   GetSearchResultsResponseType SearchResponse = new GetSearchResultsResponseType();
   SearchResponse = MyeBay.EBayService.GetSearchResults(SearchRequest);       

      for (int i = 0; i <= SearchResponse.SearchResultItemArray.Length; i++)
      {
      System.Console.WriteLine(SearchResponse.SearchResultItemArray[i].Item.Title);
      }       

   System.Console.Read();
   }
   catch (Exception e)
   {
   System.Console.WriteLine(e.Message);
   System.Console.Read();
   }

Dieses Beispiel ist sehr einfach, aber ich glaube, hier wird langsam klar, wofür ich die InterfaceService Klasse gebraucht habe – ich brauche in diesem Code keine Keys angeben.

Das Ergebnis von diesem Code ist einfach: Ausgabe von 100 aktuellen Schränke die bei eBay gelistet werden.

Es wird eine Exception ausgelöst, wenn die Suche keine Ergebnisse brauchte, Ihr könnt gerne mal das Suchwort (also SearchRequest.Query) ändern.
Trotz dessen, dass wir in der InterfaceService Klasse die Version angegeben haben, muss sie hier trotzdem beim eigentlichen Request mit angegeben werden.

Auf www.shoppingmap.de findet ihr noch 2 andere Details, die für die Suche hilfreich sein können:

- Kategorien
- Umkreis

Diese beiden Sachen, insbesondere, wie man leicht auf die Kategorien von eBay zugreifen kann, kommt dann demnächst.

Grüße

Letzte Posts

  • image.png
    RavenHQ–RavenDB in der Cloud

    Ayende Rahien hat es heute verkündet – RavenHQ, der RavenDB Cloud Hoster (natürlich von und mit Ayende) ist ab heute raus aus der Beta und man kann es von überall aus nutzen. In der Betaphase waren nur Nutzer von AppHarbor zugelassen. Was ist RavenHQ? RavenHQ ist im Grunde ein gehostes RavenDB in den Rechenzentren von ...

  • image.png
    GitHub for Windows–erste Eindrücke

    Git ist schon eine tolle Sachen und eröffnet viele neue Möglichkeiten – allerdings ist der Einstieg recht hart und selbst wenn man die guten Hilfsanleitungen auf GitHub befolgt, kommt man am Anfang nur langsam vorwärt. Insbesondere ist das Tooling für Windows / .NET Entwickler auch nicht gerade “bekanntes Terrain”. GitHub to the rescue! Die GitHub ...

  • image.png
    Chocolatey–apt-get für Windows

    Durch Zufall bin ich auf das Tool “Chocolatey” gestoßen. Wer die Website sich anschaut, wird evtl. eine Verwandschaft mit NuGet ausmachen. Was macht Chocolatey? Chocolatey ist ein “Maschine Package Manager”, das bedeutet, dass man für seine Maschine einfach Tools runterladen und Updaten kann – direkt über die Konsole. Was ist der Unterschied zu NuGet? NuGet ...

  • image.png
    SASS, LESS & Coffeescript in Visual Studio mit der Web Workbench

    CSS und Javascript sind die “kleinste” Schnittmenge von allen Browsern für die Erstellung von Web-Applikationen. Leider geht dabei etwas komfort verloren, daher lieben alle Webentwickler jQuery! SASS und LESS sind zwei Varianten, wie man “schöner” CSS schreiben kann und Coffeescript versucht Javascript Entwicklung zu vereinfachen. Aber immer der Reihe nach… Was ist SASS? SASS steht ...

  • image.png
    Code-Inside Sample nun auf GitHub: Google Code zu GitHub Migration

    Seit einiger Zeit habe ich Beispielcode auf Google Code bereitgestellt. Einfach nur noch weg von Google Code O-Ton damals war: Ich hatte mich für Google Code entschieden, weil ich hoffe dass früher oder später die Google Code Suche nutzbar ist und es dadurch wenigstens ein kleiner Mehrwert entsteht. Allerdings wirft es momentan noch ein Fehler. ...

Support us!