您的位置:首页 > 运维架构 > 网站架构

关于C#窗体登录网站获取网页Cookie

2014-12-17 10:07 405 查看
1. post登录之后获得CookieContainer,以后每次get的时候用这个CookieContainer登录

post方法大致如下
public static string SendData(string method, string Url, byte[] data, ref CookieContainer cookie, string encoding, string refer)
{
string retString = "";
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
if (cookie.Count == 0)
{
request.CookieContainer = new CookieContainer();
cookie = request.CookieContainer;
}
else
{
request.CookieContainer = cookie;
}

//实际处理
}
catch (Exception e)
{
throw e;
}
return retString;
}

get 方法大致如下
public static string SendData(string Url, ref CookieContainer cookie, string encoding, string refer)
{
return SendData("get", Url, null, ref cookie, encoding, refer);
}

2. 根据返回的html值进行判断,如果包括了500错误,重新post即可


主要是cookie传值的问题 比如我在Form_Load提交post获得cookie,我没办法在button里面调用啊 怎样才能调用到这个cookie?ref 是不是还是每次都要先请求post?

另外 500错误 程序会直接出错,而不返回html内容哦


1. 这个CookieContainer变量可以设置为窗体的成员,比如下面

public partial class Form1 : Form
{
private CookieContainer cookie;

public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{

}
}

2. 在SendData中加异常处理,一旦抛出异常则返回html为string.Empty,你的应用程序获得为空时就应该重新get和post了


添加private CookieContainer cookie;
调用时提示错误 “非静态的字段、方法或属性“WindowsFormsApplication1.Form1.cookie”要求对象引用”


如果你是静态方法调用就应该是
private static CookieContainer cookie;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c# cookie httpwebrequest