How to read HttpResponseMessage content as text
C#Jsonasp.net Web-ApiC# Problem Overview
I'm using HttpResponseMessage class as a response from an AJAX call which is returning JSON data from a service. When I pause execution after the AJAX call comes back from the service, I see this class contains a Content property which is of type System.Net.Http.StreamContent.
If I inspect in the browser I see the network call being made successfully and the JSON data as the response. I'm just wondering why I cannot see the returned JSON text from within Visual Studio? I searched throughout this System.Net.Http.StreamContent object and see no data.
public async Task<HttpResponseMessage> Send(HttpRequestMessage request) {
var response = await this.HttpClient.SendAsync(request);
return response;
}
C# Solutions
Solution 1 - C#
The textual representation of the response is hidden in the Content
property of the HttpResponseMessage
class. Specifically, you get the response like this:
response.Content.ReadAsStringAsync();
Like all modern Async methods, ReadAsStringAsync
returns a Task
. To get the result directly, use the Result
property of the task:
response.Content.ReadAsStringAsync().Result;
Note that Result
is blocking. You can also await
ReadAsStringAsync()
.
Solution 2 - C#
You can use ReadAsStringAsync
on the Content
.
var response = await client.SendAsync(request);
var content = await response.Content.ReadAsStringAsync();
Note that you usually should be using await
- not .Result
.
Solution 3 - C#
You can you ReadAsStringAsync() method
var result = await response.Content.ReadAsStringAsync();
We need to use await because we are using ReadAsStringAsync() which return task.