基于qt5的移动话费详单读取分析程序开发记录
来源:互联网 发布:js跨域清除cookie 编辑:程序博客网 时间:2024/04/28 11:45
2014/6/4
总体思路:利用qtnetwork中的函数实现post登陆,然后下载话费详单到本地,再进行分析
遇到的问题
1、移动登陆时需要输入验证码
暂时的思路:将验证码下载到本地然后再打开显示在界面上
//代码段1:将验证码文件读取并显示 QString filename = "D:/test.jpg"; if(filename.isEmpty()) { return; } else { QImage* img=new QImage; if(! ( img->load(filename) ) ) //加载图像 { QMessageBox::information(this, tr("打开图像失败"), tr("打开图像失败!")); delete img; return; } ui->label1->setPixmap(QPixmap::fromImage(*img)); }
接下来考虑如何下载图片
想法是用QNetworkAccessManager读取之后直接用QFile保存即可,不过用QFile之后会出现乱码
参考了http://www.oschina.net/code/snippet_583625_19562博文之后知道了应该用qpixmap来保存图片文件
移动验证码地址:https://sn.ac.10086.cn/servlet/CreateImage?num 其中num可取1-11(应该还有别的值,不过好像随便取哪个值都能实现获得验证码)
知道这些之后就能编写下载图片函数了,结合代码段1就能实现读取并显示验证码了,完整代码如下:
void MainWindow::loadimage(QNetworkReply* reply){ //下面三行实现下载验证码 currentPicture = new QPixmap; currentPicture->loadFromData(reply->readAll()); currentPicture->save(PICPATH);//PICPATH为宏定义的保存路径 //读取验证码文件并显示 QString filename = PICPATH; if(filename.isEmpty()) { return; } else { QImage* img=new QImage; if(! ( img->load(filename) ) ) //加载图像 { QMessageBox::information(this, tr("打开图像失败"), tr("打开图像失败!")); delete img; return; } //label的text设置为loading ui->label->setPixmap(QPixmap::fromImage(*img)); }}
//构造类中创建了QNetworkAccessManager实例,并关联信号槽MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this); picmanager = new QNetworkAccessManager(this);//下载图片的manager connect(picmanager,SIGNAL(finished(QNetworkReply*)),//下载验证码 this,SLOT(loadimage(QNetworkReply*))); //访问移动验证码地址 picmanager->get(QNetworkRequest(QUrl("https://sn.ac.10086.cn/servlet/CreateImage?2")));}
//mainwindow.h#include <QMainWindow>#include <QtNetwork/QNetworkRequest>#include <QtNetwork/QNetworkReply>#include <QtNetwork/QNetworkAccessManager>#include <QString>#include <QMessageBox>#include <QFile>#include <QDebug>#include <QPixmap>namespace Ui {class MainWindow;}class MainWindow : public QMainWindow{ Q_OBJECTpublic: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); QFile *file; QPixmap *currentPicture;private: Ui::MainWindow *ui; QNetworkAccessManager *manager; QNetworkAccessManager *picmanager;private slots: void replyFinished(QNetworkReply *); void loadimage(QNetworkReply* );};#endif // MAINWINDOW_H
至此,验证码问题完美解决,下一步准备用post实现登陆
0 0
- 基于qt5的移动话费详单读取分析程序开发记录
- 基于FL2440的QT5.6.0移植记录
- 基于VS2013+Qt5.7+OpenCV2.3.0的移动图像监测
- 基于OpenCV的读取摄像头实现单个人脸验证MFC程序
- 基于OpenCV的读取摄像头实现单个人脸验证MFC程序
- 记录移动开发的资料
- QT5.4.1移动开发序
- 分析ngnix日志文件的开发程序记录
- android移动开发-单文件下载-基于官方DownLoadManager进行
- 基于Android的短信应用开发(五)——读取显示会话信息记录
- 基于Qt5的俄罗斯方块的开发学习(1)
- 基于Qt5的俄罗斯方块的开发学习(2)
- 基于fiddler插件开发的移动测试网络监控与分析
- 基于fiddler插件开发的移动测试网络监控与分析
- 【8】北京移动充值返话费~
- 问题移动话费觉得诶度奥哦啊
- 记录一些移动开发的英文单词发音
- 记录一些移动开发的英文单词发音
- 黑马程序员---集合小结
- Mac下改善itunes下载慢的问题
- Linus Torvalds 先生的 10 个有趣的问答
- freemarker报错之十三
- R语言[]和[[]]操作的区别
- 基于qt5的移动话费详单读取分析程序开发记录
- 编译原理方面:词法语法语义分析器
- Swift编程注释小记1(变量,函数,类)
- 《The programming language Swift》读书笔记
- R语言&与&&操作符的区别
- nginx负载均衡
- 表单操作-复选框
- No matching code signing identity found
- 获取URL参数并跳转