How to read HttpResponseMessage content as text

C#Jsonasp.net Web-Api

C# 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.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionPythonIsGreatView Question on Stackoverflow
Solution 1 - C#Bart van NieropView Answer on Stackoverflow
Solution 2 - C#Timothy ShieldsView Answer on Stackoverflow
Solution 3 - C#Niraj TrivediView Answer on Stackoverflow