2016-11-07 74 views
1

我正在嘗試使用DalSoft.RestClient來對內部服務進行穩健的調用,該服務需要網絡憑證(對於我的用例,默認憑證)。如何通過DalSoft.RestClient傳遞憑證?

RestClient的構造提供了一個過載的IHttpClientWrapper通過它我可以實現處理的憑證,但我希望有一個傳遞憑據RestClient一個開箱即用的解決方案。

如何將憑證傳遞給DalSoft.RestClient

回答

2

對於通過標頭(如basic或oauth)設置的任何憑據,您都可以使用Headers方法。對於承載的oauth2令牌例如:

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

如果你正在談論的時刻Kerberos或NTLM沒有方法做到這一點,但如你所說,你可以實現IHttpClientWrapper做到這一點。奇怪的憑據使用HttpClientHandler傳遞給HttpClient。下面是如何做到這一點的例子:我意識到實施IHttpClientWrapper只是做這個

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

不理想的,所以如果你需要這個功能,我將看看它添加到構造函數。它應該是這樣的:

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

更新,這是現在支持爲3.0

+0

感謝您閱讀我的有關Kerberos和NTLM介意,因爲是的,這就是我的意思,當我說網絡憑證。如果這是通過用帶有認證信息的HttpHandler構造'RestClient'來處理的話。我創建了一個[GitHub上的問題](https://github.com/DalSoft/DalSoft.RestClient/issues/14)來請求添加上述功能。 – ahsteele

+2

謝謝@ahsteele我已經實現了這個功能。 – DalSoft