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;
}

Qt使用Cookies对网站操作之Get和POST的更多相关文章

  1. Qt使用QNetworkAccessManager实现Http操作

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:Qt使用QNetworkAccessManager实现Http操作     本文地址:http ...

  2. paip.c++ qt 目录遍历以及文件操作

    paip.c++ qt 目录遍历以及文件操作 作者Attilax ,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http://blog.csdn.net/a ...

  3. Qt中与文件目录相关操作

    一.与文件目录操作有关操作. Qt中与文件目录相关的操作在QDir中,需加入#include <QDir>语句. QDir::drives()是列出电脑根目录下的所有目录,返回的是QFil ...

  4. Qt使用QNetworkAccessManager实现Ftp操作

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:Qt使用QNetworkAccessManager实现Ftp操作     本文地址:http: ...

  5. (四)requests模块的cookies和代理操作

    基于requests模块的cookie操作 引言:有些时候,我们在使用爬虫程序去爬取一些用户相关信息的数据(爬取某个人“人人网”个人主页数据)时,如果使用之前requests模块常规操作时,往往达不到 ...

  6. Qt之课外实践——文件操作(简单清道夫)

    说明:这个小项目是关于文件操作的.主要的功能有:重复文件的查找(根据文件的大小),说白了,就是讲大小相同的文件在一起显示出来,供用户自由的选择删除.这个360云盘里的文件去重还差的很远.还有空文件夹的 ...

  7. js cookies存取删操作实例

    //写cookies函数 function SetCookie(name,value)//两个参数,一个是cookie的名子,一个是值 { var Days = 30; //此 cookie 将被保存 ...

  8. QT 一些非常常用的操作

    一   如果在窗体关闭前自行判断是否可关闭二   如何用打开和保存文件对话框  三   如何使用警告.信息等对话框  四   在Windows下Qt里为什么没有终端输出五   想在源代码中直接使用中文 ...

  9. 4.关于QT中的QFile文件操作,QBuffer,Label上添加QPixmap,QByteArray和QString之间的区别,QTextStream和QDataStream的区别,QT内存映射(

     新建项目13IO 13IO.pro HEADERS += \ MyWidget.h SOURCES += \ MyWidget.cpp QT += gui widgets network CON ...

随机推荐

  1. QAQ高精度模板笔记√

    #include <cmath> #include <cstdio> #include <cstring> #include <iostream> #i ...

  2. SaaS系列介绍之十五: SaaS知识重用

    1 建立并积累自己的开发体系 遵行业界的规定又有自己的特色是我们所追求的目标.成功的软件公司都有丰富而可复用的代码组件,几行代码在单个系统里可能无足轻重,但一旦可在大量的系统中可重复使用那就是价值不菲 ...

  3. Linux之SAMBA共享服务

    简述 Samba服务器可以让Windows操作系统用户访问局域网中Linux主机,就象访问网上邻居一样方便. 具有以下功能: 共享目录:在局域网上共享某个或某些目录,使得同一个网络内的Windows用 ...

  4. 我30天在Stack Overflow问答网站上回答问题的感受

    想法的萌芽 如果非要总结下我多年来是如何使用Stack Overflow的话,我的答案就是:打开网页,搜索问题,查看Stack Overflow的搜索结果,参考答案,最后再关掉网页. 我的生活已经离不 ...

  5. Hibernate逍遥游记-第8章 映射组成关系(<component>、<parent>)

    一. 1. <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate ...

  6. React测试Mixin

    1.test.jsx var randomNumberMixin = require("./randomNumberMixin.jsx"); describe("test ...

  7. 246. Strobogrammatic Number

    题目: A strobogrammatic number is a number that looks the same when rotated 180 degrees (looked at ups ...

  8. Android 给listview设置分割线与边界的距离

    ListView可通过配置 android:dividerline android:dividerHeight 来实现分割listview中item的效果,如图: 如果想跟上图一样实现这种有设计的分割 ...

  9. Spring 操作数据库

    试了一下spring的JdbcTemplate觉得很好用.首先增加一个连接到mysql数据库的dataSource <bean id="dataSource2" class= ...

  10. arcgis engine 开发之QI

    ArcGIS Engine开发基础之QI AO开发中QI(接口查询)非常重要,从某种意义上说不会QI就不会做AO开发. 在讲ArcGIS Engine开发QI实例操作之前,以一个现实生活例子以方便大家 ...