(论坛答疑点滴)如果向某网址Post信息,并得到CookieContainer以便以后直接通过验证

王朝asp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

using System;

using System.Net;

using System.IO;

using System.Text;

[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);

//再次显示"登录"

//如果把*行注释调,就显示"没有登录"

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航