11

WindowsストアアプリにJSON文字列をダウンロードしようとしています。これは次のようになります。

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

しかし、私はサーバーに関する情報のように見えるものを取得しています。私が得ている出力は次のとおりです。

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
}

私は周りを見回して、WebClientがWindows 8より前に使用されていて、現在はHttpClientに置き換えられていることを確認しました。したがって、DownloadString()を使用する代わりに、Content.ReadAsString()を使用しています。これが私がこれまでに持っているコードのビットです:

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();
}

誰かが私がどこで間違っているのか知っていますか?前もって感謝します!

4

1 に答える 1

20

サーバーの応答を出力しています。サーバーの応答には(ここStreamContentのドキュメントを参照)が含まれていますが、これはを定義していないため、コンテンツの代わりにクラス名が出力されます。StreamContentToString

ReadAsStringAsync(ここのドキュメント)は、サーバーからコンテンツを送り返すための正しい方法です。代わりに、この呼び出しの戻り値を出力する必要があります。

public async Task<string> GetjsonStream()
{
    HttpClient client = new HttpClient();
    string url = "http://(urlHere)";
    HttpResponseMessage response = await client.GetAsync(url);
    string content = await response.Content.ReadAsStringAsync();
    Debug.WriteLine("Content: " + content);
    return content;
}
于 2012-11-22T15:32:19.443 に答える