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前缀的令牌
试试这个
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)
| 归档时间: |
|
| 查看次数: |
11678 次 |
| 最近记录: |