如何将HttpResponseMessage内容作为文本阅读

我正在使用HttpResponseMessage类作为AJAX调用的响应,该调用从服务返回JSON数据。 当我从服务返回AJAX调用后暂停执行时,我看到这个类包含一个类型为System.Net.Http.StreamContent的Content属性。

如果我在浏览器中检查,我看到网络调用成功,JSON数据作为响应。 我只是想知道为什么我在Visual Studio中看不到返回的JSON文本? 我搜遍了整个System.Net.Http.StreamContent对象,看不到任何数据。

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

响应的文本表示隐藏在HttpResponseMessage类的Content属性中。 具体来说,你得到这样的回应:

response.Content.ReadAsStringAsync();

与所有现代Async方法一样, ReadAsStringAsync返回一个Task 。 要直接获得结果,请使用任务的Result属性:

response.Content.ReadAsStringAsync().Result;

请注意, Result是阻止的。 您还可以await ReadAsStringAsync()

您可以在Content上使用ReadAsStringAsync

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

请注意,您通常应该使用await – 而不是.Result

你可以使用ReadAsStringAsync()方法

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

我们需要使用await,因为我们正在使用返回任务的ReadAsStringAsync()。