25
我試圖通過C#代碼獲取網站的html源代碼。當我使用Windows身份驗證訪問該網站下面的代碼工作:WebClient類的域憑據不起作用
using (WebClient client = new WebClient())
{
client.Credentials = CredentialCache.DefaultCredentials;
using (Stream stream = client.OpenRead("http://intranet/"))
using (StreamReader reader = new StreamReader(stream))
{
MessageBox.Show(reader.ReadToEnd());
}
}
當我手動輸入我的域名證書我得到一個「未」消息
:
using (WebClient client = new WebClient())
{
NetworkCredential credentials = new NetworkCredential("username", "pass", "domain");
client.Credentials = credentials;
using (Stream stream = client.OpenRead("http://intranet/"))
using (StreamReader reader = new StreamReader(stream))
{
MessageBox.Show(reader.ReadToEnd());
}
}
爲什麼會這樣呢?
作品,謝謝,任何解釋? – agnieszka 2009-11-05 14:25:03
您需要指定認證類型。當服務器使用NTLM身份驗證挑戰客戶端時,將在具有'authType =「NTLM」'的WebClient.Credentials上調用ICredentials.GetCredential方法。如果您使用'WebClient.Credential = new NetworkCredential(...)'作爲沒有指定身份驗證類型,客戶端將無法正確響應。 'CredentialCache'已經實現了這個功能。 – 2009-11-05 14:57:53
我應該在Uri中指定什麼?我試圖獲得的資源是「https://myDomain.com/images/userName」。你可以把任何現場示例如何Uri和NetworkCredentials應該看起來像? Thx – 2014-03-07 09:09:31