2012-11-22 11 views
8

Ich versuche, einen JSON-String in meinem Windows Store App herunterladen, die wie folgt aussehen sollte:herunterladen JSON String in C#

{ 
"status": "okay", 
"result": {"id":"1", 
      "type":"monument", 
      "description":"The Spire", 
      "latitude":"53.34978", 
      "longitude":"-6.260316", 
      "private": "{\"tag\":\"david\"}"} 
} 

aber ich bekommen, was über den Server wie info aussieht. Die Ausgabe erhalte ich ist wie folgt:

Response: StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: System.Net.Http.StreamContent, Headers: 
{ 
    MS-Author-Via: DAV 
    Keep-Alive: timeout=15, max=100 
    Connection: Keep-Alive 
    Date: Thu, 22 Nov 2012 15:13:53 GMT 
    Server: Apache/2.2.22 
    Server: (Unix) 
    Server: DAV/2 
    Server: PHP/5.3.15 
    Server: with 
    Server: Suhosin-Patch 
    Server: mod_ssl/2.2.22 
    Server: OpenSSL/0.9.8r 
    X-Powered-By: PHP/5.3.15 
    Content-Length: 159 
    Content-Type: text/json 
} 

Ich habe um gesucht und sehen, dass WebClient vor Windows 8 verwendet wurde, und wird nun mit Httpclient ersetzt. Anstatt DownloadString() benutze ich nun Content.ReadAsString(). Hier ist der Code, den ich bis jetzt habe:

public async Task<string> GetjsonStream() 
{ 
    HttpClient client = new HttpClient(); 
    string url = "http://(urlHere)"; 
    HttpResponseMessage response = await client.GetAsync(url); 
    Debug.WriteLine("Response: " + response); 
    return await response.Content.ReadAsStringAsync(); 
} 

Wer weiß, wo ich falsch liege? Vielen Dank im Voraus!

+0

Da Sie die Antwort für nichts anderes verwenden. Warum verwenden Sie nicht einfach ['HttpClient.GetStringAsync'] (http://msdn.microsoft.com/en-us/library/hh551746.aspx)? – khellang

Antwort

14

Sie geben die Serverantwort aus. Die Serverantwort enthält eine StreamContent (siehe Dokumentation here), aber diese StreamContent definiert keine ToString, so dass der Klassenname anstelle des Inhalts ausgegeben wird.

ReadAsStringAsync (Dokumentation here) ist die richtige Methode, um den Inhalt vom Server zurückgesendet zu bekommen. Sie sollten stattdessen den Rückgabewert dieses Aufrufs ausdrucken:

+0

Danke emartel. Ich verstehe jetzt. Ich hatte nicht den tatsächlichen Inhalt in einer Zeichenfolge und die Zeile, die Sie hinzugefügt haben, bietet eine Möglichkeit für die Ausgabe der Zeichenfolge korrekt. Nun, ich denke, das ist es, was Sie meinen. :) rettete mir eine Menge Schmerzen und Kopfschmerzen! Danke noch einmal! –