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

昨天有网友在msn问我如果有几个页面,给第一个页面post信息以后session设定一个值然后进入第二个页面,第二个页面调整了session后进入第三个页面,这样的情况怎么做,我写了一个例子,不知道是不是符合你的要求,如果不符合请留言。

static   void  Main( string [] args)
        {
            CookieContainer myCookieContainer
= new  CookieContainer(); 
            Console.WriteLine(PostData(
" http://localhost/csdn/step1.asp " , " step1=step1 " ,myCookieContainer));
            Console.WriteLine(PostData(
" http://localhost/csdn/step2.asp " , "" ,myCookieContainer));
            Console.WriteLine(PostData(
" http://localhost/csdn/step3.asp " , "" ,myCookieContainer));
        }

写一个方法封装一下这个post的操作,第一个参数是地址,第二个参数是post的信息,第三个参数是CookieContainer,request的时候使用这个CookieContainer,在response的时候把CookieContainer赋值,因为本来CookieContainer就是引用类型的,所以可以不加ref或者out操作符。

         public   static   string  PostData( string  url, string  indata,CookieContainer myCookieContainer)
        {
            
string  outdata = ""
            HttpWebRequest myHttpWebRequest
= (HttpWebRequest)WebRequest.Create(url); 
            myHttpWebRequest.ContentType
= " application/x-www-form-urlencoded "
            myHttpWebRequest.ContentLength
= indata.Length; 
            myHttpWebRequest.Method
= " POST "
            myHttpWebRequest.CookieContainer
= myCookieContainer; 
            Stream myRequestStream
= myHttpWebRequest.GetRequestStream(); 
            StreamWriter myStreamWriter
= new  StreamWriter(myRequestStream,Encoding.GetEncoding( " gb2312 " ));                 
            myStreamWriter.Write(indata); 
            myStreamWriter.Close(); 
            myRequestStream.Close(); 
            HttpWebResponse myHttpWebResponse
= (HttpWebResponse)myHttpWebRequest.GetResponse(); 
            myHttpWebResponse.Cookies
= myCookieContainer.GetCookies(myHttpWebRequest.RequestUri); 
            Stream myResponseStream
= myHttpWebResponse.GetResponseStream(); 
            StreamReader myStreamReader
= new  StreamReader(myResponseStream,Encoding.GetEncoding( " gb2312 " )); 
            outdata
= myStreamReader.ReadToEnd(); 
            myStreamReader.Close(); 
            myResponseStream.Close();
            
return  outdata;
        }    

三个asp页面如下:

step1.asp
<%
if  request.ServerVariables( " REQUEST_METHOD " ) = " POST "   then
if  request.Form( " step1 " ) = " step1 "   then  
session(
" step " ) = " 1"
response.Write( " <script>alert('step1->ok');location.href='step2.asp';</script> " )
else
response.Write(
" <script>alert('step1->not ok');</script> " )
end   if
end   if
%>
< form  method ="post" >
< input  type ="text"  name ="step1"  value ="step1" >
< input  type ="submit"  value ="post" >
</ form >

step2.asp
<%
if  session( " step " ) = " 1 "   then
session(
" step " ) = " 2"
response.Write( " <script>alert('step2->ok');location.href='step3.asp';</script> " )
else
response.Write(
" <script>alert('step2->not ok');</script> " )
end   if
%>

step3.asp
<%
if  session( " step " ) = " 2 "   then  
response.Write(
" <script>alert('step3->ok');</script> " )
else
response.Write(
" <script>alert('step3->not ok');</script> " )
end   if
%>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值