老虎下山

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
using System;
using System.Net;
using System.IO;
using System.Text;

class Test
{
    [STAThread]
    static void Main(string[] args)
    {
        // 
        // TODO: 在此处添加代码以启动应用程序 
        // 
        string url = "http://localhost/csdn2/1.asp";
        //            <% 
        //            if request("aa")="zhuye" then session("ok")="ok" 
        //            if session("ok")="ok" then 
        //            response.write("登录") 
        //            else 
        //            response.write("没有登录") 
        //            end if 
        //            %> 
        string indata = "aa=zhuye";
        string outdata = "";
        CookieContainer myCookieContainer = new CookieContainer();
        //新建一个CookieContainer来存放Cookie集合 

        HttpWebRequest myHttpWebRequest = (HttpWebRequest) WebRequest.Create(url);
        //新建一个HttpWebRequest 
        myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
        myHttpWebRequest.ContentLength = indata.Length;
        myHttpWebRequest.Method = "POST";
        myHttpWebRequest.CookieContainer = myCookieContainer;
        //设置HttpWebRequest的CookieContainer为刚才建立的那个myCookieContainer 

        Stream myRequestStream = myHttpWebRequest.GetRequestStream();
        StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("gb2312"));
        myStreamWriter.Write(indata);
        //把数据写入HttpWebRequest的Request流 
        myStreamWriter.Close();
        myRequestStream.Close();
        //关闭打开对象 

        HttpWebResponse myHttpWebResponse = (HttpWebResponse) myHttpWebRequest.GetResponse();
        //新建一个HttpWebResponse 
        myHttpWebResponse.Cookies = myCookieContainer.GetCookies(myHttpWebRequest.RequestUri);
        //获取一个包含url的Cookie集合的CookieCollection 
        Stream myResponseStream = myHttpWebResponse.GetResponseStream();
        StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("gb2312"));
        outdata = myStreamReader.ReadToEnd();
        //把数据从HttpWebResponse的Response流中读出 
        myStreamReader.Close();
        myResponseStream.Close();
        Console.WriteLine(outdata);
        //显示"登录" 

        //拿到了Cookie,再进行请求就能直接读取到登录后的内容了 
        myHttpWebRequest = (HttpWebRequest) WebRequest.Create(url);
        myHttpWebRequest.CookieContainer = myCookieContainer;//* 
        //刚才那个CookieContainer已经存有了Cookie,把它附加到HttpWebRequest中则能直接通过验证 
        myHttpWebResponse = (HttpWebResponse) myHttpWebRequest.GetResponse();
        myHttpWebResponse.Cookies = myCookieContainer.GetCookies(myHttpWebRequest.RequestUri);
        myResponseStream = myHttpWebResponse.GetResponseStream();
        myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("gb2312"));
        outdata = myStreamReader.ReadToEnd();
        myStreamReader.Close();
        myResponseStream.Close();
        Console.WriteLine(outdata);
        //再次显示"登录" 
        //如果把*行注释调,就显示"没有登录" 
    } 
}

 

注释写得很明确了,不多罗嗦了。

 
补充:如果是以get方式登录的话,直接修改url就可以了,indate可以不写任何东西。(不要去修改myHttpWebRequest.Method为GET),比如把asp文件修改为if request.querystring("aa")="zhuye" then session("ok")="ok",只要修改url为string url="http://localhost/csdn2/1.asp?aa=zhuye";即可。

 

posted on 2012-04-30 22:38  老虎下山  阅读(183)  评论(0编辑  收藏  举报