• 3242阅读
  • 2回复

[提问]cookie问题,Qt_5_4_1_MinGW_32bit ,creator [复制链接]

上一主题 下一主题
离线q_t_c_n
 

只看楼主 倒序阅读 楼主  发表于: 2015-08-27

怎样正确发送cookie?
  1. QString httpgettxt(QNetworkAccessManager * manager,QNetworkRequest request)
  2. {
  3.     QNetworkReply *reply=manager->get(request);
  4.     while(!reply->isFinished())
  5.     {
  6.         QApplication::processEvents();
  7.     }
  8.     QByteArray ctype=reply->rawHeader("Content-Type");
  9.     QByteArray bytes = reply->readAll();  // bytes
  10.     QString result="";
  11.     if(ctype.contains("GBK"))
  12.     {
  13. //        QTextCodec *gbk = QTextCodec::codecForName("GB18030");
  14. //        result = gbk->toUnicode(bytes);
  15.         result=QString::fromLocal8Bit(bytes);
  16.     }else
  17.     {
  18.         result=QString::fromUtf8(bytes);
  19.     }
  20.     return result;
  21. }
  22. void MainWindow::on_pushButton_clicked()
  23. {
  24.     QNetworkAccessManager *manager=new QNetworkAccessManager();
  25.     QNetworkProxy proxy;
  26.     proxy.setType(QNetworkProxy::HttpProxy);
  27.     proxy.setHostName("127.0.0.1");
  28.     proxy.setPort(9999);
  29.     manager->setProxy(proxy);
  30.     QNetworkRequest request;
  31.     MyCookieJar *mj=new MyCookieJar;
  32.     QNetworkCookie cookie;
  33.     QString scookie="BAIDUID=35F8CF0C724B295EEC2F7D0E4E61F69A:FG=1; ";
  34.     QList<QNetworkCookie> list=cookie.parseCookies(scookie.toUtf8());
  35.     qDebug()<<list; //显示(QNetworkCookie("BAIDUID=35F8CF0C724B295EEC2F7D0E4E61F69A:FG=1; ") )
  36.     QUrl url("http://www.baidu.com");
  37.     //qDebug()<<mj->setCookiesFromUrl(list,url); //只设置这个发送不含cookie,,显示true
  38.     //qDebug()<<mj->cookiesForUrl(url);//显示()
  39.     //manager->cookieJar()->setCookiesFromUrl(list,url);//只设置这个发送不含cookie
  40.     request.setRawHeader("Cookie",scookie.toUtf8());//只设置这个发送包含cookie
  41.     request.setUrl(url);
  42.     manager->setCookieJar(mj);
  43.     httpgettxt(manager,request);
  44.     //第二次发送不管上面三个哪种都不包含返回的cookie
  45.     httpgettxt(manager,request);
  46. }

离线nigoole

只看该作者 1楼 发表于: 2015-08-28
首先你需要获取验证的cookie,然后下次在进行请求前将cookie设置到http头里面,再进行http请求
有句话说得好:好好学习,天天向上。加油~~!有上船的朋友联系企鹅393320854
离线q_t_c_n

只看该作者 2楼 发表于: 2015-08-28
回 nigoole 的帖子
nigoole:首先你需要获取验证的cookie,然后下次在进行请求前将cookie设置到http头里面,再进行http请求 (2015-08-28 16:46) 

多谢回复,
cookie我在其他地方已经获取到了,就是“BAIDUID=35F8CF0C724B295EEC2F7D0E4E61F69A:FG=1;”,
我的要求也不高,如果全部都是我手工设置,那也没关系,现在就是出现了设置了没用
有的时候第一条发送出去还带着cookie,服务器返回set-cookie(返回设置的其他cookie值),再次发送,第一次发的值就没有了
现在都不知道怎么才是正常的方式了

现在的情况时,我在其他地方已经获取了cookie,第一次发送就需要发送过去,然后,以后的每次访问都需要带着这个cookie,按我上面的方法试着做不到
快速回复
限100 字节
 
上一个 下一个