HttpWebRequest 保存Cookies,模擬Session登錄


 前面使用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();
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM