【发布时间】:2017-03-02 21:21:33
【问题描述】:
我正在使用 System.Net.Http HttpClient 来调用 Github 的 rest API。
我使用下面生成的 HTTP 客户端发出的每 10 个请求中约有 5 个响应“401 Unauthorized”。我在邮递员中放置了相同的 URL 和标头,但从未收到任何“401 Unauthorized”响应。显然,我的问题出在客户端。
合理的搜索返回了许多不同的建议。最常见的是使用 HttpHandler 或 webrequest,但仍然不清楚为什么有些请求会失败。我最好的猜测是 Github 偶尔会重定向,客户端处理不好。我看到了一些关于缓存凭据的引用,但这些示例都显示了“NetworkCredential”对象,但是对于 OAuth,我们只是将不记名令牌放在标题中,如下所示,所以我不确定这是否适用于我的情况。
谁能解释问题的原因?
public static HttpClient GetClient(string bearerToken)
{
HttpClient client = new HttpClient();
client.BaseAddress = _githubApiUri;
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(_mediaTypeWithQualityHeaderValue));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", bearerToken);
client.DefaultRequestHeaders.Add("User-Agent", "System.Net.Http Agent");
return client;
}
【问题讨论】: