我的HttpWebRequest中的授权标题未正确更新

问题描述 投票:0回答:1

奇怪的事情发生在我的HttpWebRequest上...我想编写一个必要时更新授权标头的函数(当我们得到401响应时)。所以基本上是这样的:

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。但是,如果我在第一行将BadToken替换为CorrectToken,则第一次尝试会得到200。因此,似乎标头没有更新...我在调试器中签入,可以看到该值已更改,但是这种行为不言而喻...

这里发生了什么?

c# authorization httpwebrequest
1个回答
0
投票
  1. 多次调用GetResponse返回相同的响应对象;该请求不会重新发出。引用此链接:https://docs.microsoft.com/en-us/dotnet/api/system.net.httpwebrequest.getresponse?view=netframework-4.8

  2. 在catch块中创建HttpWebRequest的新实例,并使用新令牌发出请求。

© www.soinside.com 2019 - 2024. All rights reserved.