Сохранение заголовка авторизации в RestSharp во время перенаправления - PullRequest
0 голосов
/ 19 ноября 2018

Я использую RestSharp, чтобы сделать вызов GET API.Вызов api аутентифицируется через HTTP Basic аутентификацию, передавая заголовок авторизации.

Сервер перенаправляет вызов API с кодом состояния 307. Мой код клиента обрабатывает перенаправления, но заголовок авторизации не передается этому перенаправленному вызову API.Это сделано по уважительным причинам, указанным здесь .Следовательно, я получаю неавторизованную ошибку.

Как я могу настроить RestClient для восстановления заголовка авторизации?

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);

1 Ответ

0 голосов
/ 22 ноября 2018

Я добавил чек, который отправляет запрос API на получение 401 с кодом ниже.

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...