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

How do I pass credentials with DalSoft.RestClient?

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

RestClient 的构造函数提供了一个重载来传递 IHttpClientWrapper,我可以实现处理凭据,但我希望有一个开箱即用的解决方案来将凭据传递给 RestClient.

如何将凭据传递给 DalSoft.RestClient

对于通过 header 设置的任何凭据,例如 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 只是为了做到这一点并不理想,因此如果您需要此功能,我会考虑将其添加到构造函数中。它看起来像这样:

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

Update this is now supported as of 3.0