各位高手!!我要获取一个需要登陆的网站的内容,请问应该怎样写?谢谢!! 急用!!!

解决方案 »

  1.   

    我要获取一个需要登陆的网站的内容
    我不知道你到底要得到什么内容webclient下载内容 不知道是不是你需要的
      

  2.   

    我试过用webClient类下载,但是不行;我的意思是这样的:如果一个网站,
    它首先有一个登录的界面,登录之后才进入网站首页,现在我要获取这个网站的首页内容,但是我始终获取不到其首页的内容,而每一次去获取网站首页的内容,总是得到的是网站登录页面的内容;
      

  3.   


     try
                {
                    CookieContainer cookieContainer = new CookieContainer();                ///////////////////////////////////////////////////
                    // 1.打开 default.aspx 页面,获得 GetVeiwState & EventValidation
                    ///////////////////////////////////////////////////                
                    // 设置打开页面的参数                HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
                    request.Method = "GET";
                    request.KeepAlive = false;
                    request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)";
                    Encoding encode = System.Text.Encoding.GetEncoding(936);
                    // 接收返回的页面
                    HttpWebResponse response = request.GetResponse() as HttpWebResponse;
                    System.IO.Stream responseStream = response.GetResponseStream();
                    System.IO.StreamReader reader = new System.IO.StreamReader(responseStream, Encoding.UTF8);
                    string srcString = reader.ReadToEnd();                // 获取页面的 VeiwState                
                    string viewStateFlag = "id=\"__VIEWSTATE\" value=\"";
                    int i = srcString.IndexOf(viewStateFlag) + viewStateFlag.Length;
                    int j = srcString.IndexOf("\"", i);
                    string viewState = srcString.Substring(i, j - i);                // 获取页面的 EventValidation                
                    string eventValidationFlag = "id=\"__EVENTVALIDATION\" value=\"";
                    i = srcString.IndexOf(eventValidationFlag) + eventValidationFlag.Length;
                    j = srcString.IndexOf("\"", i);
                    string eventValidation = srcString.Substring(i, j - i);                ///////////////////////////////////////////////////
                    // 2.自动填充并提交 MyLogin.aspx 页面
                    ///////////////////////////////////////////////////
                    // 提交按钮的文本
                    string submitButton = "登陆";                // 用户名和密码
                    string userName = "";
                    string password = "";                // 将文本转换成 URL 编码字符串
                    viewState = System.Web.HttpUtility.UrlEncode(viewState);
                    eventValidation = System.Web.HttpUtility.UrlEncode(eventValidation);
                    submitButton = System.Web.HttpUtility.UrlEncode(submitButton);                // 要提交的字符串数据。格式形如:user=uesr1&password=123
                    string formatString = "txtUserName={0}&txtPwd={1}&btnLogin={2}&__VIEWSTATE={3}&__EVENTVALIDATION={4}";
                    string postString = string.Format(formatString, userName, password, submitButton, viewState, eventValidation);                // 将提交的字符串数据转换成字节数组
                    byte[] postData = Encoding.ASCII.GetBytes(postString);                // 设置提交的相关参数
                    request = WebRequest.Create(url) as HttpWebRequest;                request.Method = "POST";
                    request.KeepAlive = false;
                    request.ContentType = "application/x-www-form-urlencoded";
                    request.CookieContainer = cookieContainer;
                    request.ContentLength = postData.Length;                // 提交请求数据
                    System.IO.Stream outputStream = request.GetRequestStream();
                    outputStream.Write(postData, 0, postData.Length);
                    outputStream.Close();                                // 接收返回的页面
                    response = request.GetResponse() as HttpWebResponse;
                    responseStream = response.GetResponseStream();
                    reader = new StreamReader(responseStream, System.Text.Encoding.Default);
                    srcString = reader.ReadToEnd();              
                    sw.Close();
                    fs.Close();
                    
                               }
                catch (WebException we)
                {
                    string msg = we.Message;
                }