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;
}
Open your immediate window and write response. Content. ReadAsStringAsync(). Result .
Several months ago, Microsoft decided to change up the HttpResponseMessage class. Before, you could simply pass a data type into the constructor, and then return the message with that data, but not anymore. Now, you need to use the Content property to set the content of the message.
Depending on which of these is returned, Web API uses a different mechanism to create the HTTP response. Convert directly to an HTTP response message. Call ExecuteAsync to create an HttpResponseMessage, then convert to an HTTP response message. Write the serialized return value into the response body; return 200 (OK).
A HttpResponseMessage allows us to work with the HTTP protocol (for example, with the headers property) and unifies our return type. In simple words an HttpResponseMessage is a way of returning a message/data from your action.
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()
.
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
.
You can you ReadAsStringAsync() method
var result = await response.Content.ReadAsStringAsync();
We need to use await because we are using ReadAsStringAsync() which return task.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With