我有一個服務REST API,我嘗試連接。 使用瀏覽器一切正常。身份驗證到REST API:使用Cookie的摘要類型(c#)
但在c#中我總是有一個未經授權的答案。
我使用fiddler調查了這個問題,發現在第一次不成功時,request服務器返回一些cookie,並且瀏覽器在用戶名/密碼(摘要類型)的下一個會話中使用它。在這種情況下,第二個會話成功。我嘗試使用c#發送請求(我嘗試使用System.Net.WebClient和HttpWebRequest)我沒有得到響應(一段時間後我有超時異常)。
我的代碼:
WebClient webClient = new WebClient();
CredentialCache cache = new CredentialCache();
Uri prefix = new Uri(Url);
cache.Add(prefix, "Digest", new NetworkCredential(login, password));
webClient.Credentials = cache;
...
string response = webClient.DownloadString(restRequest);
最後一行拋出異常。
當我在小提琴手調查這個問題時,我發現在401狀態的第一次會話中,我們收到cookie(如下圖所示)。 fiddler's picture 瀏覽器在下一個請求中發送該cookie,並且認證成功發生。 但在c#中,我無法用狀態401來回應這個響應。正如我在fiddler studio中看到的,嘗試在超時異常將被拋出之前的每個下一秒期間打開新的會話10-20次。我的答覆在零。
另外我有其他環境沒有要求的cookie,那裏我的代碼工作。
請給我一個建議鋤頭以獲得對狀態401的響應,並從它獲取cookie以將其設置爲另一個請求。
感謝 麥克