我正在尝试使用DalSoft.RestClient对内部服务进行静默调用,这需要提供网络凭据(对于我的用例是默认凭据)。
RestClient
的构造函数提供了一个重载以传递IHttpClientWrapper
,我可以实现处理凭据,但我希望有一个现成的解决方案,用于将凭据传递给{{ 1}}。
如何将凭据传递给RestClient
?
答案 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起支持更新此功能