将HttpClient转换为RestSharp

Maa*_*ten 7 c# restsharp asp.net-web-api xamarin

我有Httpclient函数,我试图转换为RestSharp但我面临一个问题,我无法解决使用谷歌.

client.BaseAddress = new Uri("http://place.holder.nl/");
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer",access_token);
HttpResponseMessage response = await client.GetAsync("api/personeel/myID");
string resultJson = response.Content.ReadAsStringAsync().Result;
Run Code Online (Sandbox Code Playgroud)

这个代码在我的HttpClient代码中,它运行良好,但是我无法在RestSharp中使用它,我在使用RestSharp时总是未经授权:

RestClient client = new RestClient("http://place.holder.nl");
RestRequest request = new RestRequest();
client.Authenticator = new HttpBasicAuthenticator("Bearer", access_token);
request.AddHeader("Accept", "application/json");
request.Resource = "api/personeel/myID";
request.RequestFormat = DataFormat.Json;
var response = client.Execute(request);
Run Code Online (Sandbox Code Playgroud)

我错过了认证的东西吗?

Maa*_*ten 14

这解决了我的问题:

RestClient client = new RestClient("http://place.holder.nl");
RestRequest request = new RestRequest("api/personeel/myID", Method.GET);
request.AddParameter("Authorization", 
string.Format("Bearer " + access_token),
            ParameterType.HttpHeader);
var response = client.Execute(request);
Run Code Online (Sandbox Code Playgroud)

在与Fiddler嗅探时,我得出的结论是RestSharp将access_token发送为Basic,因此使用普通的Parameter而不是HttpBasicAuthenticator,我可以强制使用Bearer前缀的令牌


Jag*_*raj 6

试试这个

 RestClient client = new RestClient("http://place.holder.nl");
 RestRequest request = new RestRequest("api/personeel/myID",Method.Get);
 request.AddParameter("Authorization",$"Bearer {access_token}",ParameterType.HttpHeader);
 request.AddHeader("Accept", "application/json");
 request.RequestFormat = DataFormat.Json;
 var response = client.Execute(request);
Run Code Online (Sandbox Code Playgroud)