我正在使用 RestSharp 进行 GET api 调用。通过传递授权 header ,通过 HTTP 基本身份验证对 api 调用进行身份验证。
服务器重定向带有状态代码 307 的 api 调用。我的客户端代码确实处理了重定向,但授权 header 没有传递给这个重定向的 api 调用。这样做是出于正当理由,如前所述 here .因此,我确实遇到了未经授权的错误。
如何配置 RestClient 以恢复授权 header ?
var client = new RestClient("https://serverurl.com");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Basic Z3JvdXAxOlByb2otMzI1");
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Tenant-Id", "4892");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
最佳答案
我添加了一个检查,使用以下代码重新发送接收 401 的 api 请求。
var client = new RestClient("https://serverurl.com");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Basic Z3JvdXAxOlByb2otMzI1");
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Tenant-Id", "4892");
IRestResponse response = client.Execute(request);
//Resend the request if we get 401
int numericStatusCode = (int)response.StatusCode;
if(numericStatusCode == 401) {
var redirectedClient = new RestClient(response.ResponseUri.ToString());
IRestResponse newResponse = redirectedClient.Execute(request);
Console.WriteLine(newResponse.ResponseStatus);
}
关于c# - 在重定向期间在 RestSharp 中保留授权 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53374247/