【问题标题】:How do I pass credentials with DalSoft.RestClient?如何使用 DalSoft.RestClient 传递凭据?
【发布时间】:2016-11-07 22:53:54
【问题描述】:
我正在尝试使用 DalSoft.RestClient 对需要提供网络凭据(对于我的用例为默认凭据)的内部服务进行安静的调用。
RestClient 的构造函数提供了一个重载以传入 IHttpClientWrapper,我可以实现处理凭据,但我希望有一个开箱即用的解决方案可以将凭据传递给 RestClient。
如何将凭据传递给DalSoft.RestClient?
【问题讨论】:
标签:
c#
credentials
networkcredentials
dalsoft.restclient
【解决方案1】:
对于通过标头设置的任何凭据,例如 basic 或 oauth,您可以使用 Headers 方法。 oauth2 不记名令牌示例:
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 开始更新现在支持
【讨论】:
-
感谢您阅读我对 Kerberos 和 NTLM 的看法,因为是的,这就是我说网络凭据时的意思。如果这是通过使用带有身份验证信息的 HttpHandler 构造 RestClient 来处理的,那就太好了。我创建了一个issue on GitHub 来请求添加此功能,如上所述。
-