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

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";即可。

 

转载于:https://www.cnblogs.com/zhaoming/archive/2009/06/13/1502478.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值