您无法从GetJsonAsync<T>
获取标题,因为它返回Task<T>
而不是原始响应。您可以拨打GetAsync
,并在下一步反序列化的有效载荷:
HttpResponseMessage response = await url.GetAsync();
HttpResponseHeaders headers = response.Headers;
FooPayload payload = await response.ReadFromJsonAsync<FooPayload>();
ReadFromJsonAsync
是一种推广方法:
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);
}
附:这就是为什么我更喜欢并推荐使用原始HttpClient
而不是像RestSharp或Flurl这样的第三方高级客户端。
你关心所有场景中的头文件还是只是错误响应,比如403s?如果是后者,Flurl有一个方便的try/catch模式,您可以在不放弃'GetJsonAsync'的情况下获得响应头。 –