2010-11-02 122 views
2

我想用這個來讀取在C#網站:有沒有辦法通過登錄信息讀取C#網站

 WebRequest myWebRequest = WebRequest.Create("http://www.myurl.com/test.aspx"); 
     WebResponse myWebResponse = myWebRequest.GetResponse(); 
     Stream ReceiveStream = myWebResponse.GetResponseStream(); 
     Encoding encode = System.Text.Encoding.GetEncoding("utf-8"); 
     StreamReader readStream = new StreamReader(ReceiveStream, encode); 
     string strResponse = readStream.ReadToEnd(); 

的問題是,他們現在已經在網頁上進行驗證,所以我得到的登錄提示當我去網站,並輸入用戶名和登錄。

我的代碼現在返回錯誤:

The remote server returned an error: (401) Unauthorized. 

我嘗試添加此:

myWebRequest.Credentials = new NetworkCredential("[username]", "[pwd]"); 

這:

ServicePointManager.ServerCertificateValidationCallback += delegate { return true; }; 

,但仍然得到了同樣的錯誤:

無論如何pas那些WebRequest代碼中的憑證?

回答

2

如果網站使用HTTP基本認證(瀏覽器生成的登錄對話框),你可以設置HttpWebRequestCredentials屬性到NetworkCredential實例。

如果網站使用表單身份驗證(基於HTML的登錄表單;這更常見),您需要提出一個單獨的請求來登錄該網站,並跨請求共享CookieContainer以保留登錄。
您可以使用Fiddler來查看登錄請求的外觀。

+0

查看更新的問題你能解釋一下我將如何使用提琴手來確定預期的效果嗎? – leora 2010-11-02 22:02:39

+0

@ooo:登錄到Fiddler運行的網站並查看請求。 – SLaks 2010-11-02 22:41:16

1

是當然的,你可以通過登錄信息(當認證「包括基本身份驗證(這是應用驅動提示的操作系統帳戶通常情況下)或NTLM(集成文件安全)」):

myWebRequest.Credentials = new NetworkCredential("username","password"); 

更深入地瞭解這裏:

http://www.west-wind.com/presentations/dotnetwebrequest/dotnetwebrequest.htm

+0

查看更新的問題。 。似乎沒有工作 – leora 2010-11-02 22:03:06

+0

@ooo - 你看過這篇文章嗎?也許有更多的相關信息。我想這不是「https」,如果是這樣:http://www.west-wind.com/weblog/posts/48909.aspx接受所有證書。 – netadictos 2010-11-02 22:09:29

+0

明確不是https - 我更新了問題。我已添加acceptall政策,但似乎沒有幫助。 – leora 2010-11-02 22:12:43

相關問題