2017-12-28 42 views
0

Ich habe gerade ein HTTP-Anforderung erhalten, den Inhalt zu bekommen (alle Badges) aus Stapelüberlauf für meine Konsole-Anwendung zu erhalten, wie untengezeigt:Verwandte Serviceanruf

public void getStackBadges() 
     { 
      var client = new HttpClient(); 
      client.BaseAddress = new Uri("https://api.stackexchange.com/docs//badges?order=desc&sort=rank&site=stackoverflow"); 
      var res = client.GetAsync(client.BaseAddress).Result; 
      Console.WriteLine(res); 
     } 

Kann jemand bitte sagen Sie, wenn ich alle Abzeichen von Stack-Überlauf mit dieser API bekommen will, was ich tun muss. Ich verstehe das Format des Ergebnisses, das ich auf meinem Cmd prmt bekomme, nicht wirklich!

Ausgabe auf Konsole:

StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: System.Net.Http.StreamContent, Headers: 
{ 
    Access-Control-Allow-Origin: * 
    Access-Control-Allow-Methods: GET, POST 
    Access-Control-Allow-Credentials: false 
    X-Content-Type-Options: nosniff 
    Cache-Control: private 
    Date: Thu, 28 Dec 2017 09:49:33 GMT 
    Content-Length: 880 
    Content-Encoding: gzip 
    Content-Type: application/json; charset=utf-8 
} 

Antwort

4

Sie die Dokumentation der API abfragt und Sie sind höchstwahrscheinlich die Seite Markup bekommen.

sollten Sie die Abfrage werden: https://api.stackexchange.com/2.2/badges?order=desc&sort=rank&site=stackoverflow

Das Format der Ausgabe in über API-Methode ist JSON.

Nur wenige Dinge in der Ausgabe zu beachten:

  • quota_max - erfahren Sie, wie viele Anfragen können Sie an einem Tag gemacht werden.
  • quota_remaining - Wie viele Anfragen können Sie heute noch stellen?
  • has_more - Wenn es eine andere Seite mit Abzeichen gibt.

Um die Seite zu ändern, fügen Sie einen &page= Parameter an die URL an.

So Ihre Abfrage für Seite 2 würde wie folgt aussehen:

https://api.stackexchange.com/2.2/badges?page=2&order=desc&sort=rank&site=stackoverflow

Edit:

Wie gesagt, die API I verknüpft haben, ist richtig, Ihr Problem ist die Art und Weise Sie versuchen, Zeigen Sie den Inhalt der Antwort von der API an.

.Result ist nicht, was Sie denken, dass es ist. .Result gibt Task<TResult> zurück, was nicht die Antwort von der API ist, sondern das Ergebnis der Anfrage. Aus diesem Grund haben Sie den Statuscode der Anfrage, des Antworttyps usw.

So erhalten Sie den Antworttext. Dies ist ein Beispiel, Sie müssen Ihre eigene Verarbeitung durchführen, wenn Sie auf verschiedene Eigenschaften der Antwortobjekte zugreifen möchten. Dies ist jedoch eine separate Frage und es liegt außerhalb des Rahmens dieser Frage.

+0

Ich werde es versuchen .. ok .. danke –

+0

Ich versuchte, wie Sie sagte immer noch gleiche Ausgabe. Ich brauche nur die Namen der Chargen. –

+0

@SandeepPandey Sie greifen auf das Ergebnis des Anrufs falsch zu. Was Sie zugreifen, ist nicht das, was Sie wollen. Lesen Sie die Dokumentation Ihres Anrufs. Siehe meine Bearbeitung zum Beispiel. – Adriani6