zoukankan      html  css  js  c++  java
  • Qt使用Cookies对网站操作之Get和POST

    1.添加QNetwork模块:

    a.Qt Creator中打开.pro文件添加QT+=Network;

    b.VS_Qt中项目属性中Qt Project Settings中Qmodules中勾选”QNetwork library“

    2.添加头文件:

    #include <QNetworkAccessManager>
    #include <QNetworkCookieJar>
    #include <QNetworkRequest>
    #include <QNetworkReply>
    

     3.获取Post的cookies

    //url为请求网址,content为请求内容,即传递的参数,allcookies应该定义为全局变量,这里为了演示,则定义为局部变量
    void NuistMoney::PostLToNet(QString url ,QString content) { QByteArray _content = content.toUtf8(); int _contentLength = content.length(); QNetworkRequest req; req.setUrl(QUrl(url)); req.setHeader(QNetworkRequest::ContentTypeHeader,"application/x-www-form-urlencoded"); req.setHeader(QNetworkRequest::ContentLengthHeader,_contentLength); QNetworkAccessManager nManager; QNetworkReply* getreply=nLManager.post(req,_content); QEventLoop loop; //下载完成后,直接退出子进程 connect(getreply, SIGNAL(finished()), &loop, SLOT(quit())); //子进程开始运行 loop.exec(); //读取所有获取到的网页内容 QTextCodec *codec = QTextCodec::codecForName("utf8");//使用utf8编码,这样才可以显示中文 QString data= codec->toUnicode(getreply->readAll());//获取网页的所有数据 QList<QNetworkCookie> allcookies=nManager.cookieJar()->cookiesForUrl(QUrl(murl)); }

     4.使用cookies:

    //根据获取的cookies直接获取murl网址指定的信息
    QString NuistMoney::GetToAllNet(QString murl) { //转换cookies成QVariant QVariant var; var.setValue(allcookies); //设置QNetworkRequest的网址和cookies QNetworkRequest req; req.setUrl(QUrl(murl)); req.setHeader(QNetworkRequest::CookieHeader,var); //通过QNetworkAccessManager对象获取网页内容 QNetworkAccessManager nManager; QNetworkReply* getreply=nManager.get(req); //创建一个子进程,以便于提供时间给QNetworkAccessManager对象下载完网页内容 QEventLoop loop; //下载完成后,直接退出子进程 connect(getreply, SIGNAL(finished()), &loop, SLOT(quit())); //子进程开始运行 loop.exec(); //读取所有获取到的网页内容 QTextCodec *codec = QTextCodec::codecForName("utf8");//使用utf8编码,这样才可以显示中文 QString data= codec->toUnicode(getreply->readAll());//获取网页的所有数据 return data; }
  • 相关阅读:
    Send or receive files via Xshell
    git archive命令详解
    test命令详解
    shell中的数学运算
    深入理解文件权限
    rebuild online时意外中断 再次重建时报错解决方法
    关于临时表空间,在日常生产中会遇到的问题
    Oracle对于敏感数据的处理,可以采用策略(dbms_rls.add_policy)
    我对于B-树索引的内部结构与索引类型所做的笔记
    记一次ADG备库归档目录满导致的延时处理
  • 原文地址:https://www.cnblogs.com/striver-zhu/p/4451892.html
Copyright © 2011-2022 走看看