前面使用HttpWebRequest 對象可以抓取網頁中一些資料,不過有些頁面可以直接打開,而有些頁面必登錄之后才能打開,也就是在登錄后保存登錄信息在Session,這樣就可以訪問有權限的頁面了。下面通過HttpWebRequest獲取網頁內容並保持session,最主要的就是存儲cookie。第二次請求網頁的時候把cookie傳送過去,這樣就可以訪問有Session的頁了。
CookieContainer cookies = new CookieContainer(); private void button1_Click(object sender, EventArgs e) { var str = "username=wzh&userpwd=1223";//登錄名和密碼 var buf = Encoding.UTF8.GetBytes(str); var loginUrl="http://localhost:15993/home/login";//提交登錄地址 var postUrl="http://localhost:15993/home/Item";//此頁需登錄后才能訪問 HttpWebRequest res = (HttpWebRequest)HttpWebRequest.Create(new Uri(loginUrl)); res.Method = "post"; res.CookieContainer = cookies; //向提交流中寫入信息 var writeStream = res.GetRequestStream(); writeStream.Write(buf, 0, buf.Length); writeStream.Close(); writeStream.Dispose(); res.GetResponse().Close();//此句完成登錄,無此句無法得到cookie res = (HttpWebRequest)HttpWebRequest.Create(new Uri(postUrl));//具體session才能訪問的頁 res.CookieContainer = cookies;//設置cookies var resStream = new StreamReader(res.GetResponse().GetResponseStream());//取到返回值 textBox1.Text = resStream.ReadToEnd();//顯示返回值 resStream.Close(); resStream.Dispose(); res.Abort(); }