Problem dotyczy właściwości HttpResponseMessage.Content, po wywołaniu tej metody jObject jest zawsze nullem, mimo, że response dostaje header 200 OK. Problem polega na tym, że jest to rozwiązanie, które najczęściej pojawia się w internecie i nie bardzo da się to ominąć w celu pobrania danych w formacie JSON z API. Haczyk polega na tym, co jest pokazane na screenie zamieszczonym w załączniku.
Przy debugowaniu i umieszczeniu break pointa w linijce jObject = (JObject) ... , zerknięcie w pola obiektu, który chcę przerzucić jako string wyrzuca exceptiony: , których googlowanie nie daje efektów :/
Length = '((System.Net.Http.WinHttpResponseStream)((System.Net.Http.StreamContent)response.Content)._content).Length' threw an exception of type 'System.ObjectDisposedException'
Czy ktoś z Was może zetknął się z takim problemem?
public async Task<JObject> GetJsonFromApiAsync(Uri uri)
{
using (var client = new HttpClient())
{
JObject jObject = null;
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = await client.GetAsync(uri);
if (response.IsSuccessStatusCode)
{
jObject = (JObject) response.Content.ReadAsStringAsync().Result; //tutaj się coś sypie
}
return jObject;
}
}