web-dev-qa-db-ja.com

HttpClientをRestSharpに変換する

RestSharpに変換しようとしているHttpclient関数がありますが、googleを使用して解決できない問題に直面しています。

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;

このコードは私の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);

認証で何かが足りませんか?

10
Maarten

これで私の問題は修正されました:

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

Fiddlerをスニッフィングすると、RestSharpがaccess_tokenをBasicとして送信するという結論に達しました。そのため、HttpBasicAuthenticatorの代わりにプレーンパラメーターを使用すると、Bearerプレフィックスを使用してトークンを強制できます。

14
Maarten

これを試してください

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

これで誰かが起こった場合、V 106.6.10の時点で、デフォルトのパラメーターをクライアントに追加するだけで、すべてのリクエストメソッドにAuthトークンを追加する必要がなくなります。

private void InitializeClient()
{
     _client = new RestClient(BASE_URL);           
     _client.DefaultParameters.Add(new Parameter("Authorization",
                string.Format("Bearer " + TOKEN), 
                ParameterType.HttpHeader));
}
0
user12097461