web-dev-qa-db-ja.com

HttpResponseMessageコンテンツをテキストとして読み取る方法

サービスからJSONデータを返すAJAX呼び出しからの応答としてHttpResponseMessageクラスを使用しています。AJAX呼び出しが戻った後に実行を一時停止するとサービスから、このクラスにはSystem.Net.Http.StreamContent型のContentプロパティが含まれていることがわかります。

ブラウザで検査すると、ネットワーク呼び出しが正常に行われ、JSONデータが応答として表示されます。 Visual Studio内から返されたJSONテキストが表示されないのはなぜだろうか?このSystem.Net.Http.StreamContentオブジェクト全体を検索しましたが、データがありません。

public async Task<HttpResponseMessage> Send(HttpRequestMessage request) {
    var response = await this.HttpClient.SendAsync(request);
    return response;
}
27
PythonIsGreat

応答のテキスト表現は、Contentクラスの HttpResponseMessage プロパティに隠されています。具体的には、次のような応答を取得します。

response.Content.ReadAsStringAsync();

最新のAsyncメソッドと同様に、ReadAsStringAsyncTaskを返します。結果を直接取得するには、タスクのResultプロパティを使用します。

response.Content.ReadAsStringAsync().Result;

Resultはブロックしていることに注意してください。 awaitReadAsStringAsync()を使用することもできます。

52
Bart van Nierop

ReadAsStringAsyncContentを使用できます。

var response = await client.SendAsync(request);
var content = await response.Content.ReadAsStringAsync();

通常、.Resultではなくawaitを使用する必要があることに注意してください。

6
Timothy Shields

ReadAsStringAsync()メソッドを使用できます

var result = await response.Content.ReadAsStringAsync();

タスクを返すReadAsStringAsync()を使用しているため、awaitを使用する必要があります。

2
Niraj Trivedi