Vous ne pouvez pas obtenir un en-tête de GetJsonAsync<T>
car il renvoie Task<T>
au lieu de la réponse brute. Vous pouvez appeler GetAsync
et désérialiser votre charge utile à l'étape suivante:
HttpResponseMessage response = await url.GetAsync();
HttpResponseHeaders headers = response.Headers;
FooPayload payload = await response.ReadFromJsonAsync<FooPayload>();
ReadFromJsonAsync
est une méthode extention:
public static async Task<TBody> ReadFromJsonAsync<TBody>(this HttpResponseMessage response)
{
if (response.Content == null) return default(TBody);
string content = await response.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<TBody>(content);
}
post-scriptum C'est pourquoi je préfère et recommande d'utiliser HttpClient
brut au lieu de tout client de haut niveau tiers comme RestSharp ou Flurl.
Vous vous souciez des en-têtes dans tous les scénarios ou des réponses aux erreurs, comme les 403? Si ce dernier, Flurl a un modèle pratique d'essai/attrape où vous pouvez obtenir aux en-têtes de réponse sans abandonner 'GetJsonAsync'. –