使用Flurl从API获取响应。
var response = await url.WithClient(fc)
.WithHeader("Authorization", requestDto.ApiKey)
.GetJsonAsync<T>();
dynamic httpResponse = response.Result;
但我无法访问httpResponse.Headers
如何在使用GetJsonAsync时访问响应标头。
答案 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>