日期:2014-05-20  浏览次数:20801 次

WebRequest的问题?
我想做一个用WebRequest提取网页html代码的程序,但有一个问题:我用WebRequest.Create( "http;//abc.com/login.asp ")可以正常取到网页http;//abc.com/login.asp的html代码,但是这个页面只是一个登录的页面,我把用户名,密码也加上去时也可以成功登录。
  但是我要提取的内容不在这个页面,而是在http;//abc.com/data.asp,当我用WebRequest.Create( "http;//abc.com/data.asp ")去请求这个页面时,这个页面只是显示还没登录成功的信息,没有我需要的内容,可能是session值在第二次请求时丢失了,请问怎么解决这个问题?请各位高手指教。

------解决方案--------------------
记住cookie

具体可看我的csdn reader源代码

*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)

最新版本:20070130

http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
------解决方案--------------------
需要保持Cookie,例:

//定义全局变量:
CookieContainer cc = new CookieContainer();

private string SendRequest(string _url,string _requestString)
{
byte[] requestBytes = System.Text.Encoding.GetEncoding( "GB2312 ").GetBytes(_requestString);
craboRequest= (HttpWebRequest)WebRequest.Create(_url);
craboRequest.ContentType = "application/x-www-form-urlencoded ";
craboRequest.ContentLength= requestBytes.Length;
craboRequest.Method = "POST ";
craboRequest.CookieContainer = cc;
using(Stream writer = craboRequest.GetRequestStream())
{
writer.Write(requestBytes,0,requestBytes.Length);
}
}

------解决方案--------------------
关键是这一句
craboRequest.CookieContainer = cc;
------解决方案--------------------
我是转贴别人的代码,我自己没有现成的
其实没必要用全局变量,直接
someRequest.CookieContainer = new CookieContainer();
即可
------解决方案--------------------
Cookie
------解决方案--------------------
所以,.Net安全性差。简单的Cookie就容易攻破Session