获取回复标题

时间:2017-04-19 07:03:22

标签: c# .net-core flurl

使用Flurl从API获取响应。

var response = await url.WithClient(fc)
            .WithHeader("Authorization", requestDto.ApiKey)
            .GetJsonAsync<T>();
dynamic httpResponse = response.Result;

但我无法访问httpResponse.Headers

如何在使用GetJsonAsync时访问响应标头。

2 个答案:

答案 0 :(得分:7)

您无法从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);
}

P.S。这就是为什么我更喜欢并建议使用原始HttpClient而不是像RestSharp或Flurl这样的任何第三方高级客户端。

答案 1 :(得分:1)

您还可以等待#possible duplicated random values df['SoC'] = np.repeat(np.random.randint(0,40, size=len(df) // 86400), 86400) #unique random numbers df['SoC'] = np.repeat(np.random.choice(np.range(0, 40), size=len(df) // 86400, replace=False), 86400) ,取出HttpResponseMessage对象,然后将完成的.Headers发送到task进行反序列化。以下是不使用扩展方法的方法:

ReceiveJson<T>