2017-09-22 2 views
0

Ich habe die folgende Methode, die ebay Artikel Daten aus der API mit Artikel-ID zurückgibt. Aber das Problem ist, ich möchte die Ebay Kategorie und Unterkategorie Listen mit dieser ebay documentation abrufen. Ich habe den folgenden Wert auf GetCategories anstelle von GetMultipleItems geändert, aber es hat nur versaut und gibt nichts zurück. Wenn jemand eine gute Idee über die ebay API hat, dann bitte helfen. Mein Ziel ist es, alle eBay-Kategorien und Unterkategorien zurückzugeben, das war's. Danke im Voraus. Hinweis: Ich habe meine Test-ebay-Kontoanmeldeinformationen angegeben, um Ihnen beim schnellen Debuggen zu helfen.Ebay API zurück Kategorie Liste

request.Headers.Add ("X-EBAY-API-CALL-NAME", "GetMultipleItems");

private string GetItemData(string itemID) 
{ 

    var request = (HttpWebRequest)WebRequest.Create("http://open.api.ebay.com/shopping"); 
    byte[] bytes = null; 
    request.Headers.Add("X-EBAY-API-APP-ID", "KavinHim-BestProd-PRD-78e3e6bf1-97d9ef25"); 
    request.Headers.Add("X-EBAY-API-DEV-NAME", "afd260f4-ec61-49e9-a78e-235d6a622c08"); 
    request.Headers.Add("X-EBAY-API-CERT-NAME", "PRD-8e3e6bf1d032-6b7b-44e2-abf5-e1a5"); 
    request.Headers.Add("X-EBAY-API-SITE-ID", "0"); 
    request.Headers.Add("X-EBAY-API-CALL-NAME", "GetMultipleItems"); 
    request.Headers.Add("X-EBAY-API-VERSION", "863"); 
    request.Headers.Add("X-EBAY-API-REQUEST-ENCODING", "xml"); 


    request.Timeout = Timeout.Infinite; 
    request.KeepAlive = true; 

    string itemNode = "<ItemID>" + itemID + "</ItemID> \n"; 

    bytes = System.Text.Encoding.ASCII.GetBytes("<?xml version='1.0' encoding='utf-8'?> <GetMultipleItemsRequest xmlns='urn:ebay:apis:eBLBaseComponents'> <IncludeSelector>ItemSpecifics</IncludeSelector> " + itemNode + " </GetMultipleItemsRequest>"); 

    request.Method = "POST"; 
    request.Proxy = null; 


    Stream requestStream = request.GetRequestStream(); 
    requestStream.Write(bytes, 0, bytes.Length); 
    requestStream.Close(); 
    using (var response = (HttpWebResponse)request.GetResponse()) 
    { 
     if (response.StatusCode == HttpStatusCode.OK) 
     { 
      Stream responseStream = response.GetResponseStream(); 
      string responseStr = new StreamReader(responseStream).ReadToEnd(); 
      responseStream.Close(); 
      //var document = XDocument.Parse(responseStr); 
      //XNamespace ns = "urn:ebay:apis:eBLBaseComponents"; 
      return responseStr; 

     } 
     return null; 
    } 
} 
+0

GetMultipleItems und GetCategories erwartet verschiedene Eingänge, haben Sie sie ändern? –

+0

Nein, ich habe keine eindeutige Dokumentation gefunden, die obligatorische Pflichtfelder @ZivWeissman erklärt –

Antwort

1

1. XML API. Achten Sie auf URL und Header-Parameter, die ich in meiner Probe verwende. wie man den Link ebay_token überprüfen http://developer.ebay.com/devzone/xml/docs/howto/tokens/gettingtokens.html

var request = (HttpWebRequest) WebRequest.Create("https://api.sandbox.ebay.com/ws/api.dll"); 
request.Headers.Add("X-EBAY-API-APP-NAME", "stackove-testapp-SBX-95d7a0307-15c60ef4"); 
request.Headers.Add("X-EBAY-API-DEV-NAME", "ca7a53e9-b281-4787-a77c-91c73fb09e1f"); 
request.Headers.Add("X-EBAY-API-CERT-NAME", "SBX-5d7a030717dc-d70b-45b7-ab25-0c14"); 
request.Headers.Add("X-EBAY-API-SITEID", "0"); 
request.Headers.Add("X-EBAY-API-CALL-NAME", "GetCategories"); 
request.Headers.Add("X-EBAY-API-COMPATIBILITY-LEVEL", "863"); 
request.ContentType = "text/xml"; 
request.Method = "POST"; 
request.KeepAlive = true; 
request.Proxy = null; 

var eBayToken = "ebay_token"; 
var bytes = Encoding.UTF8.GetBytes(string.Format(@"<?xml version='1.0' encoding='utf-8'?> 
    <GetCategoriesRequest xmlns='urn:ebay:apis:eBLBaseComponents'> 
    <RequesterCredentials> 
    <eBayAuthToken>{0}</eBayAuthToken> 
    </RequesterCredentials> 
    <CategorySiteID>0</CategorySiteID> 
    <DetailLevel>ReturnAll</DetailLevel> 
    </GetCategoriesRequest>", eBayToken)); 
request.ContentLength = bytes.Length; 
using (Stream requestStream = request.GetRequestStream()) 
{ 
    requestStream.Write(bytes, 0, bytes.Length); 
    using (var response = (HttpWebResponse) request.GetResponse()) 
    { 
     if (response.StatusCode == HttpStatusCode.OK) 
     { 
      Stream responseStream = response.GetResponseStream(); 
      string responseStr = new StreamReader(responseStream).ReadToEnd(); 
     } 
    } 
} 

2. ebay sdk für .net

eBay.Service.Call.GetCategoriesCall getCategories = new GetCategoriesCall(); 
      getCategories.ApiContext.SoapApiServerUrl = "https://api.sandbox.ebay.com/wsapi"; 
      getCategories.ApiContext.ApiCredential.eBayToken = your_token; 
      getCategories.CategorySiteID = "0"; 
      getCategories.LevelLimit = 4; 
      getCategories.DetailLevelList.Add(DetailLevelCodeType.ReturnAll); 
      var categories = getCategories.GetCategories();