Laden...

eBay API Request

Erstellt von Drombart vor einem Jahr Letzter Beitrag vor einem Jahr 603 Views
D
Drombart Themenstarter:in
1 Beiträge seit 2022
vor einem Jahr
eBay API Request

Grüße ich versuche eine XML Datei von einem Artikel zu bekommen. Im Postman konnte ich die Anfrage bereits erfolgreich durchführen. Die Antwort konnte ich auch als XML speichern.
Mit dem übertragen auf C# scheitere ich.


using System.Net;
using System.Text;

WebRequest myWebRequest = WebRequest.Create("https://open.api.ebay.com/shopping");
// Create a 'WebRequest' object with the specified url. 

myWebRequest.Credentials = CredentialCache.DefaultCredentials;
myWebRequest.Method = "POST";
myWebRequest.ContentLength = 0;
myWebRequest.Headers.Add("X-EBAY-API-IAF-TOKEN", "Bearer ????");
myWebRequest.Headers.Add("X-EBAY-API-SITE-ID", "77");
myWebRequest.Headers.Add("X-EBAY-SOA-OPERATION-NAME", "findItemsByKeywords");
myWebRequest.Headers.Add("X-EBAY-API-CALL-NAME", "GetSingleItem");
myWebRequest.Headers.Add("X-EBAY-API-VERSION", "863");
myWebRequest.Headers.Add("X-EBAY-SOA-SECURITY-APPNAME", "???");
myWebRequest.Headers.Add("X-EBAY-SOA-GLOBAL-ID", "EBAY-DE");
myWebRequest.Headers.Add("X-EBAY-SOA-SERVICE-NAME", "FindingService");
myWebRequest.Headers.Add("X-EBAY-API-REQUEST-ENCODING", "xml");
myWebRequest.Headers.Add("Content-Type", "application/json");

soweit so gut. Das funktioniert bereits.
Für den aufruf muss ich jetzt noch folgendes mitsenden.


<?xml version="1.0" encoding="utf-8"?>
<GetSingleItemRequest xmlns="urn:ebay:apis:eBLBaseComponents">
    <!-- Enter valid item IDs that exist in the environment 
         (Sandbox, Production, etc.) you are using -->
    <ItemID>172721887023</ItemID>

<VariationSpecifics> NameValueListArrayType
<NameValueList> NameValueListType
<Name> string </Name>
<Value> string </Value>
<!-- ... more Value values allowed here ... -->
</NameValueList>
<!-- ... more NameValueList nodes allowed here ... -->
</VariationSpecifics>
</GetSingleItemRequest> 

Nach diversen Google Nächte brauche ich euren Rat.
Wie kann ich das jetzt in den Aufruf packen?

Hinweis von Abt vor einem Jahr

Auch Du bist herzlichst dazu eingeladen in Zukunft Quellcode nicht einfach platt in den Beitrag zu schieben, sondern Code Tags zu verwenden.
Wenn man es Helfern einfacher macht, bekommt man i.d.R. auch eher Hilfe.
[Hinweis] Wie poste ich richtig?

2.078 Beiträge seit 2012
vor einem Jahr

Nutze den HttpClient, der ist in einigen Punkten einfacher.

Und den Body kannst Du doch einfach als String zusammen bauen?
Beim WebRequest geht das mit OpenRequestStream und in den Stream musst Du dann noch deine Daten schreiben. Vergiss aber nicht, ContentType und ContentLength zu setzen.

Oder Du greifst auf Refit zurück, das kann dir extrem viel Arbeit abnehmen.
Wenn Du noch mehr Requests für andere Endpunkte brauchst, würde ich definitiv auf Refit setzen.

16.807 Beiträge seit 2008
vor einem Jahr

Für den aufruf muss ich jetzt noch folgendes mitsenden.

Nein, musst Du nicht (in der Form). Du hast einfach den Doku-Text hier rein kopiert inkl. den Hinweisen, welcher Typ hinter welcher XML Node steckt.
Das ist nicht Sinn der Sache 😉 Du musst den Body schon so formulieren, wie Du die Ergebnisse haben willst.

Wie Du in https://developer.ebay.com/devzone/shopping/docs/CallRef/GetSingleItem.html#sampledescriptionItemSpecifics lesen kannst musst Du im Body definieren, welche Felder Du zurück bekommen willst, wenn Du die Default-Felder nicht willst / Dir nicht ausreichen.
Dort steht auch 1:1 welches Objekt zurück kommt. Du musst das vollständig selbst serialisieren (oder eben mit Tools wie Refit arbeiten).

Hinweis: das ist eine XML-basierte RPC API.
eBay bietet auch REST und SOAP APIs an, letztere sind aber veraltet.