谢谢回复!我一直想模拟像浏览器那样退出网站,但就是不行,执行上面的退出代码,响应显示Ok,cookie也与浏览器响应中的一致。但接着登陆,又出现“只允许一个用户登录,可能是关掉浏览器,忘了退出”的信息(翻译)。 可我没有用浏览器,登录和退出只是模拟而已。我的执行顺序是这样的,我有一个应用,启动dll(内部调用线程,模拟登录网站,抓取数据,接收数据后,传给主界面,如此循环,直到调用命令关停所有背景任务),停止dll及其管理的所有背景任务及线程。
后来,我想每次退出时将最后得到的CookieCollection存到文件里,每次登录前再载入并赋值给item。我在HttpHelper的setRequest和getData里分别做了如下改动,还是不行:
[C#] 纯文本查看 复制代码
BinaryFormatter formatter = new BinaryFormatter();
string sfile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "cookies.dat");
在setRequest里加入:
[C#] 纯文本查看 复制代码
if (item.ResultCookieType == ResultCookieType.CookieCollection && item.CookieCollection == null)
{
CookieCollection retrievedCookies = null;
if (File.Exists(sfile))
{
using (Stream s = File.OpenRead(sfile))
retrievedCookies = (CookieCollection)formatter.Deserialize(s);
}
item.CookieCollection = retrievedCookies;
}
在getData里:
[C#] 纯文本查看 复制代码
using (Stream s = File.Create(sfile))
formatter.Serialize(s, response.Cookies);
|