各位高手,苏飞,你们好:
我用HttpHelper 1.8版本(net2.0)下模拟登录的时候出现cookies不能自动增加到下一个访问页面的cookies中去。
我的例子:第一个页面,域名为:https://xui.ptlogin2.qq.com
返回的cookies有域名为xui.ptlogin2.qq.com,和ptlogin2.qq.com 2种domain的。
当访问第二个页面的时候:https://ssl.ptlogin2.qq.com,上一个页面返回的domain为ptlogin2.qq.com的cookies并没有自动添加到cookies中去。
代码我是这样处理的(一直使用该类,也没遇到这样的问题):
[C#] 纯文本查看 复制代码
public CookieCollection cookies = new CookieCollection();
rv = vp.vpage(cookies, link, referer, new string[] { "" });
if (!rv.status)
{
logerror("打开登录界面失败了。" + rv.msg);
return rv;
}
cookies.Add(rv.cookies); //每访问一个页面都会把返回的cookies增加到cookies中去
rv = vp.vpage(cookies, link, referer, new string[] { "" }, "*/*");
if (!rv.status)
{
logerror("检查失败了。" + rv.msg);
return rv;
}
下面是vpage的方法,输出的cookies数量是正确的。:
public HttpReturnValue vpage(CookieCollection cookies, string link, string referer, string[] needstr,string accept=null)
{
HttpReturnValue rv = new HttpReturnValue();
rv.status = false;
try
{
PageVisit pv = new PageVisit();
HttpItem hi = new HttpItem();
hi.URL = link;
if (cookies != null)
{
log.Info("当前cookies数量:" + cookies.Count); //这里输出的数量是正确的
hi.CookieCollection = cookies;
}
if (!string.IsNullOrEmpty(referer))
{
hi.Referer = referer;
}
hi.UserAgent = AllUa.ua;
if (accept == null)
{
hi.Header.Add("upgrade-insecure-requests", "1");
hi.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*; q=0.8";
}
else
{
hi.Accept = accept;
}
hi.Header.Add("Accept-Encoding", "gzip, deflate, br");
hi.Header.Add("Accept-Language", "zh-CN,zh;q=0.8");
HttpReturnValue rvv = pv.visitPageReturnHtmlAndCookiesV2(hi, needstr, null, 0, 3, null);
return rvv;
}
catch (Exception e)
{
rv.status = false;
rv.msg = e.ToString();
log.Error(e.ToString());
return rv;
}
}
访问第一个页面返回的cookies:
访问第二个页面没有附带上第一个页面访问的cookies,多个一个是我添加的。
[C#] 纯文本查看 复制代码 Cookie ck1 = new Cookie();
ck1.Name = "_qpsvr_localtk";
ck1.Value = ""+mr.functionMathRandom();
ck1.Domain = ".qq.com";
ck1.Path = "/";
q.cookies.Add(ck1);
|