如何使用DalSoft.RestClient传递凭据?

时间:2016-11-07 22:53:54

标签: c# credentials networkcredentials dalsoft.restclient

我正在尝试使用DalSoft.RestClient对内部服务进行静默调用,这需要提供网络凭据(对于我的用例是默认凭据)。

RestClient的构造函数提供了一个重载以传递IHttpClientWrapper,我可以实现处理凭据,但我希望有一个现成的解决方案,用于将凭据传递给{{ 1}}。

如何将凭据传递给RestClient

1 个答案:

答案 0 :(得分:2)

对于通过标头(如basic或oauth)设置的任何凭据,您可以使用Headers方法。 oauth2 bearer token的示例:

dynamic client = new RestClient("http://localhost/");
client
   .Headers(new { Authorization = "Bearer " + bearerToken })
   .MyResource
   .Get();

如果你现在谈论kerberos或ntlm没有办法做到这一点,但正如你的建议你可以实现IHttpClientWrapper来做到这一点。奇怪的凭据使用HttpClientHandler传递给HttpClient。以下是如何执行此操作的示例:

HttpClientHandler handler = new HttpClientHandler();
handler.Credentials = new NetworkCredential();
HttpClient client = new HttpClient(handler);

我意识到实现IHttpClientWrapper只是为了做到这一点并不理想,所以如果你需要这个功能,我会考虑将它添加到ctor中。它看起来像这样:

HttpClientHandler handler = new HttpClientHandler();
handler.Credentials = new NetworkCredential();
new RestClient("http://localhost/", new Config(handler)); 
  

从3.0起支持更新此功能