如何向某网址Post信息,并得到CookieContainer以便以后直接通过验证

本文介绍了一个使用C#进行Web请求的例子,演示了如何发送POST请求并处理Cookie,以便模拟登录过程。
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);
        //再次显示"登录"         //如果把*行注释调,就显示"没有登录"     } 
}

转载于:https://www.cnblogs.com/adwords/archive/2011/12/24/2300762.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值