我使用HttpResponseMessage类作为AJAX调用的响应,该调用从服务返回JSON数据。当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;
}
答案 0 :(得分:48)
响应的文本表示隐藏在HttpResponseMessage
类的Content
属性中。具体来说,你得到这样的回应:
response.Content.ReadAsStringAsync();
与所有现代异步方法一样,ReadAsStringAsync
会返回Task
。要直接获得结果,请使用任务的Result
属性:
response.Content.ReadAsStringAsync().Result;
请注意Result
正在阻止。您还可以await
ReadAsStringAsync()
。
答案 1 :(得分:6)
您可以在ReadAsStringAsync
上使用Content
。
var response = await client.SendAsync(request);
var content = await response.Content.ReadAsStringAsync();
请注意,您通常应该使用await
- 而不是.Result
。
答案 2 :(得分:2)
你可以使用ReadAsStringAsync()方法
var result = await response.Content.ReadAsStringAsync();
我们需要使用await,因为我们正在使用返回任务的ReadAsStringAsync()。