The HttpContent extension ReadAsAsync<T> is very practical since it will allow you to deserialize an incoming response to a typed object. When using the HttpClient in asp.net core the method will fail to perform the deserialization unless you set the mediaType in the accept headers, in example
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
A complete example would look like this
using (HttpClient client = new HttpClient()) { var json = new StringContent(content: jsonString, encoding: Encoding.UTF32) { Headers = { // required for json apis ContentType = new MediaTypeHeaderValue(mediaType: "application/json") } }; // required to use ReadAsAsync client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); using (var res = await client.PostAsync(requestUri: $"{apiUrl}", content: json)) { using(HttpContent content = res.Content) { var typedData = await content.ReadAsAsync(); } } }
Cheers