http://www.chinabs.net/aspnet/default.asp?infoid=40

解决方案 »

  1.   

    对不起,我要读取的是远程页面的内容,该页面需要登录,上面的代码是测试csdn,请问如何实现通过程序读取csdn登录后的内容?
      

  2.   

    你登陆获取响应之后,要从响应的Header中得到Cookie,其中包含了SessionID然后下一次请求,把上一次响应获得的SessionID添加到Cookie当中发送回去
      

  3.   

    先把你的数据放到cookie中,需要的时候再取出来。
      

  4.   

    Header的cookie如何读取?再如何下一次请求?能给具体代码吗?
      

  5.   

    不是很难,你不是获取了一个Response吗?然后你在下一次请求像这样:创建一个HttpRequest:request,然后:foreach( HttpCookie cookie in response.Cookies ) //response是你上一次的响应
      request.Cookies.Add( cookie );然后再发送新的请求
      

  6.   

    现举一例,调试多日,总是不能读出内容,请高手测试改错并给出代码???先取得Cookies总为空。private void Button3_Click(object sender, System.EventArgs e)
    {
    string url = "http://www.cn8815.com/member/checklogin.asp";
    System.Net.HttpWebRequest req=(System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(url);
    req.Method="POST";//POST方式请求
    req.ContentType= "application/x-www-form-urlencoded";//内容类型
             
    CookieContainer cook=new CookieContainer ();
    req.CookieContainer =cook;
    //参数经过URL编码
    string paraUrlCoded;
    paraUrlCoded=System.Web.HttpUtility.UrlEncode("userid") +"="+System.Web.HttpUtility.UrlEncode("wan888");
    paraUrlCoded=paraUrlCoded+"&";
    paraUrlCoded=paraUrlCoded+System.Web.HttpUtility.UrlEncode("passwd")+"="+System.Web.HttpUtility.UrlEncode("8888"); //上面为真实有效的用户名及密码   //将URL编码后的字符串转化为字节
    byte[] payload;
    payload=System.Text.Encoding.UTF8.GetBytes(paraUrlCoded);
    req.ContentLength=payload.Length; //设置请求的ContentLength
    System.IO.Stream writer=req.GetRequestStream();//获得请求流
    writer.Write(payload,0,payload.Length);//将请求参数写入流
    writer.Close();//关闭请求流 //获得响应流
    System.Net.HttpWebResponse response=(System.Net.HttpWebResponse)req.GetResponse();
         



     
              //urlagain="http:..."是需要密码才能访问的页面。            string urlagain="http://www.cn8815.com/view.asp?id=20129&classname=配货需求";
    HttpWebRequest reqagain=(HttpWebRequest)WebRequest.Create (url);
    reqagain.CookieContainer =new CookieContainer ();
    // 下面Cookies经测试实际为空。 if(response.Cookies !=null&&response.Cookies.Count >0)
    {
     
    reqagain.CookieContainer.Add(response.Cookies );
    }
    else
    Label1.Text="cookie is null";   HttpWebResponse res=(HttpWebResponse)reqagain.GetResponse ();
    StreamReader read=new StreamReader (res.GetResponseStream (),System.Text .Encoding.GetEncoding ("GB2312"));
    string content=read.ReadToEnd ();
                 Label3.Text=content;
    read.Close ();
     
    }
      

  7.   

    我的目的是通过程序读取:"http://www.cn8815.com/view.asp?id=20129&classname=配货需求"的内容,IE是需要登录才能进入的。
      

  8.   

    关注!用request.param("id")和request.param("classname")不行吗?
      

  9.   

    用Request.QueryString["id"];和Request.QueryString["classname"];接收不行吗?
      

  10.   

    可能理解错了,http://www.cn8815.com/view.asp?id=20129&classname=配货需求",不是我控制的网页,直接在IE中输入:“http://www.cn8815.com/view.asp?id=20129&classname=配货需求”,会显示需要登录的窗口。但在首页中登录后,IE就可以访问页“http://www.cn8815.com/view.asp?id=20129&classname=配货需求”
      

  11.   

    我的目的是:通过程序读取:“http://www.cn8815.com/message.asp?id=1”中[详细信息]的内容。当然通过已注册的用户名和口令:wan888,8888
      

  12.   

    登陆验证无非COOKIE与SESSION,你可以用程序,创造一个SESSION或者COOKIE,然后绕过验证的程序段,然后用REQUEST。QUERYSTRING的方法读就行了。前提是你必须知道哪个SESSION或者COOKIE的变量名与值。
      

  13.   

    请问,用程序如何读取一个SESSION,再放入一个新的请求中?最好能给出代码。
      

  14.   

    第一次访问(“http://www.cn8815.com/member/checklogin.asp”)结束时,response.Cookies为什么为空?读不出cookies.请解答???
      

  15.   

    访问该页,应该能找到答案,http://www.dotnet247.com/247reference/default.aspx
      

  16.   

    用户用的是Session,而不是cookie,可以从response中head取得set-cookies的值,也就是一次请求的session标识,再放入第二次的请求中。