使用QHttp下载网络文件的简单例子
来源:互联网 发布:JSON键值对转java对象 编辑:程序博客网 时间:2024/05/13 13:20
场景:
1 可用作软件更新。
2 文件下载服务器
注意:
1 *.pro 添加 QT += network
2 VS下,链接器---附加依赖项--输入---添加 QtNetworkd4.lib或QtNetwork4.lib,根据debug和release选择。
3 exe目录 拷贝QtNetworkd4.dll或QtNetwork4.dll,根据debug和release选择。
4 网络环境是在非代理下使用,否则程序需要设置代理,使用QNetworkProxy类
1 http_get.h
#ifndef HTTP_GET_H#define HTTP_GET_H#include <QObject>#include <QtCore>#include <QtGui>#include <QtNetwork/QtNetwork>#include <QtNetwork/QHttp>#include <iostream>#include <stdio.h>#include <QUrl>#include <QWidget>#include <QFile>#include <QTextStream>#include <QNetworkAccessManager>#include <QTextCodec>using namespace std;class HttpGet : public QObject{ Q_OBJECTpublic: explicit HttpGet(QObject *parent = 0); bool getFile(const QUrl &url);signals: void done();public slots: void httpDone(bool error); private: QHttp http; QFile file;};#endif // HTTP_GET_H2 http_get.cpp
#include "http_get.h"HttpGet::HttpGet(QObject *parent) :QObject(parent){ connect(&http,SIGNAL(done(bool)),this,SLOT(httpDone(bool)));}bool HttpGet::getFile(const QUrl &url){ if(!url.isValid()) { std::cerr<<"error: Invalid URL!" <<endl; return false; } if(url.scheme() != "http") { std::cerr<<"error: URL must start with 'http:'" <<endl; return false; } if(url.path().isEmpty()) { std::cerr<<"error: URL has no path!" <<endl; return false; } QFileInfo fileInfo(url.path()); QString localFileName = fileInfo.fileName(); if(localFileName.isEmpty()) { localFileName = "http.out"; } file.setFileName(localFileName); if(!file.open((QIODevice::WriteOnly))) { std::cerr<<"error: Cannot write file" <<":"<<qPrintable(file.fileName())<<": "<<qPrintable(file.errorString())<<endl; return false; } http.setHost(url.host(),url.port(80));// 服务器端口 http.get(url.path(),&file); http.close(); return true;}void HttpGet::httpDone(bool error){ if(error) { std::cerr<<"error:"<<qPrintable(http.errorString())<<endl; } else { std::cerr<<"file download as "<<qPrintable(file.fileName())<<endl; } file.close(); emit done();<span style="color:#cc0000;">// 链接成功才会自动下载</span>}
3 main.cpp
#include <QtGui/QApplication>#include "http_get.h"int main(int argc, char *argv[]){ QApplication a(argc, argv); MainWindow w; w.show(); HttpGet getter; QString str("http://www.istonsoft.com/win-update.xml"); QUrl url(str); getter.getFile(url); return a.exec();}
0 0
- 使用QHttp下载网络文件的简单例子
- 使用qftp或者qhttp下载文件
- QHttp get的小例子
- DELPHI如何下载网络文件的例子
- BackgroundWorker的使用例子-下载文件
- (Delphi)如和下载网络文件的例子
- (Delphi)如和下载网络文件的例子
- 【转载】struts2实现下载文件的简单例子
- Struts2上传与下载文件 简单例子
- 一个使用DownloadManager下载文件的小例子
- 简单的网络编程例子
- 网络爬虫的简单例子
- 多线程和网络通信实现的简单文件下载
- Java实现网络文件下载的简单示例
- ftpclient下载文件的例子
- ftpclient下载文件的例子
- ftpclient下载文件的例子
- android使用网络下载文件
- 【图论】强连通专题总结
- Android笔记 方向传感器
- maven3常用命令、java项目搭建、web项目搭建详细图解
- js数据类型
- 如何修改注册表,开启远程桌面
- 使用QHttp下载网络文件的简单例子
- H2数据库简介及在Web程序中运行的数据库中支持ODBC连接
- 计算机《软件工程》代码评审与性能优化实验环境搭建eclipse-jre-findbugs-checkstyle-pmd-tptp
- hdu 4920
- 梯度、散度和旋度
- LDA学习心得
- Android应用实例之----基于Service与ContentProvider的音乐播放实例!
- CV牛人牛事
- java温故而知新之接口与抽象类