c# - 在重定向期间在 RestSharp 中保留授权 header

标签 c# api restsharp unauthorized

我正在使用 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/

相关文章:

c# - MongoDatabase 和 MongoCollection 可以是单例吗

database - Stripe 在后端使用什么进行存储?

api - 如何在 Header @ Postman 中发送 api key ?

c# - RestSharp 缺少执行功能?

c# - 找不到任何已安装的.NET Core SDK

c# - 如果您没有任何异步代码,您如何处理返回 Task 的第 3 方接口(interface)?

mysql - 通过 AJAX 发送 POST 请求时 Console.log 显示 "500 (INTERNAL SERVER ERROR)"

c# - RESTSharp 抛出时未捕获异常

restsharp - 不要在 RestSharp 中对参数进行编码

c# - 如何使用 Android 版 Xamarin 格式化电话号码?