C# 授权标头未在我的HttpWebRequest中正确更新
我的HttpWebRequest发生了奇怪的事情。。。 我想写一个函数,在需要时更新授权头(当我们得到401响应时)。基本上是这样的:C# 授权标头未在我的HttpWebRequest中正确更新,c#,authorization,httpwebrequest,C#,Authorization,Httpwebrequest,我的HttpWebRequest发生了奇怪的事情。。。 我想写一个函数,在需要时更新授权头(当我们得到401响应时)。基本上是这样的: try { request.Headers.Add(HttpRequestHeader.Authorization, "Bearer " + BadToken); return request.GetResponse(); } catch (Exception e) { if (e is WebException) {
try
{
request.Headers.Add(HttpRequestHeader.Authorization, "Bearer " + BadToken);
return request.GetResponse();
}
catch (Exception e)
{
if (e is WebException)
{
var ex = (e as WebException);
var status = (ex.Response as HttpWebResponse)?.StatusCode;
if (status == HttpStatusCode.Unauthorized)
{
request.Headers.Set(HttpRequestHeader.Authorization, "Bearer " + CorrectToken);
return request.GetResponse();
}
}
return null;
}
不幸的是,我还是拿到了401。
但是如果我在第一行用CorrectToken替换BadToken,我在第一次尝试中得到200。因此,标题似乎没有更新。。。我在调试器中进行了检查,可以看到值发生了更改,但行为本身就说明了问题
这是怎么回事
不要使用Set()函数,首先删除授权头并再次添加。这没有帮助-结果仍然是401…多次调用GetResponse返回相同的响应对象;请求未重新发出。在catch块中创建请求的新实例。