RestSharp,基本身份验证

时间:2019-03-19 23:25:31

标签: c# .net restsharp

我有一个关于使用RestSharp对GET Url进行授权调用的问题。

我有一个提供的基本令牌,看起来像这样:dGVzdG5hbWU6dGVzdHBhc3N3b3Jk。

假设GET网址为https://sometest.api.com/todos?id=1,并且需要授权。

我如何在上面的GET Url中传递上面的令牌?

我尝试过:

var client = new RestClient("https://sometest.api.com") // base address
var request = new RestRequest("todos?id=1"); // resource
request.AddHeader("Accept", "application/json");
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "Basic dGVzdG5hbWU6dGVzdHBhc3N3b3Jk");

var response = client.Execute(request);

这似乎不起作用。我是否需要添加基本令牌作为参数,或者同时添加标头和参数?

或者我需要在RestClient上使用client.Authenticator:

client.Authenticator = new HttpBasicAuthenticator("testname", "testpassword");

感谢您的帮助。

最好的问候

1 个答案:

答案 0 :(得分:0)

您能否提供更多信息,如何得出结论呢?有什么例外吗?您可以提供一条错误消息吗?

您是如何获得该令牌的?令牌的到期时间是多少?

这就是我的做法,与您非常相似,除了我使用的是不同的令牌类型:

var request = CreateServerRequest(_configuration.SOME_URI);
request.AddHeader("Authorization", $"Bearer {Token}");
request.AddJsonBody(request);

var server = new RestClient(_configuration.SOME_ENDPOINT);
var serverResponse = server.Execute(request);
if (serverResponse.StatusCode == HttpStatusCode.OK)
{
     return new ServiceResponse<bool>(true);
}

其中CreateServerRequest方法仅包含:

return new RestRequest(uri)
{
   RequestFormat = DataFormat.Json,
   Method = Method.POST
};

希望这会有所帮助, 欢呼和快乐的编码。