217

HttpResponseMessage のコンテンツを取得しようとしています。である必要があります{"message":"Action '' does not exist!","success":false}が、HttpResponseMessage から取得する方法がわかりません。

HttpClient httpClient = new HttpClient();
HttpResponseMessage response = await httpClient.GetAsync("http://****?action=");
txtBlock.Text = Convert.ToString(response); //wrong!

この場合、txtBlock の値は次のようになります。

StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
  Vary: Accept-Encoding
  Keep-Alive: timeout=15, max=100
  Connection: Keep-Alive
  Date: Wed, 10 Apr 2013 20:46:37 GMT
  Server: Apache/2.2.16
  Server: (Debian)
  X-Powered-By: PHP/5.3.3-7+squeeze14
  Content-Length: 55
  Content-Type: text/html
}
4

10 に答える 10

463

最も簡単な方法は、最後の行を次のように変更することだと思います

txtBlock.Text = await response.Content.ReadAsStringAsync(); //right!

この方法では、ストリーム リーダーを導入する必要はなく、拡張メソッドも必要ありません。

于 2015-04-07T10:47:17.987 に答える
77

GetResponse()を呼び出す必要があります。

Stream receiveStream = response.GetResponseStream ();
StreamReader readStream = new StreamReader (receiveStream, Encoding.UTF8);
txtBlock.Text = readStream.ReadToEnd();
于 2013-04-10T20:58:22.500 に答える
43

これを試してください。次のような拡張メソッドを作成できます。

    public static string ContentToString(this HttpContent httpContent)
    {
        var readAsStringAsync = httpContent.ReadAsStringAsync();
        return readAsStringAsync.Result;
    }

次に、単純に拡張メソッドを呼び出します。

txtBlock.Text = response.Content.ContentToString();

これがお役に立てば幸いです;-)

于 2015-01-13T15:54:58.670 に答える
0

GetStringAsync次の方法を使用できます。

var uri = new Uri("http://yoururlhere");
var response = await client.GetStringAsync(uri);
于 2016-09-05T08:04:53.820 に答える