ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【Qt】Qt再学习(五):HTTP Example(HTTP下载文件的示例)

2020-12-02 23:31:15  阅读:262  来源: 互联网

标签:QNetworkRequest HTTP Qt 示例 QNetworkReply connect reply progressDialog QNetworkAc


1、简介

此示例演示一个简单的HTTP客户端如何从远程主机获取文件。

2、使用类

QUrl:url抽象类
QUrl::fromUserInput:从QString转换成QUrl
QNetworkAccessManager:网络访问API围绕一个QNetworkAccessManager对象构造,该对象保存其发送的请求的通用配置和设置。创建QNetworkAccessManager对象后,应用程序可以使用它通过网络发送请求。提供了一组标准函数,这些函数接受一个请求和可选数据,并且每个函数都返回一个QNetworkReply对象。返回的对象用于获取响应于相应请求而返回的任何数据。
QNetworkRequest:发送的请求
QNetworkReply:收到的回应

QNetworkAccessManager、QNetworkRequest、QNetworkReply一组简单的用法如下:

QNetworkRequest request;
request.setUrl(QUrl("http://qt-project.org"));
request.setRawHeader("User-Agent", "MyOwnBrowser 1.0");

QNetworkReply *reply = manager->get(request);
connect(reply, &QIODevice::readyRead, this, &MyClass::slotReadyRead);
connect(reply, &QNetworkReply::errorOccurred,
        this, &MyClass::slotError);
connect(reply, &QNetworkReply::sslErrors,
        this, &MyClass::slotSslErrors);

本例中主要用法如下,重点关注QNetworkReply的各种信号的使用,
如:QNetworkReply::finished、QIODevice::readyRead、QNetworkReply::downloadProgress、QNetworkReply::finished

	// QNetworkAccessManager qnam;
    QNetworkReply *reply = qnam.get(QNetworkRequest(url));
    connect(reply, &QNetworkReply::finished, this, &HttpWindow::httpFinished);
    connect(reply, &QIODevice::readyRead, this, &HttpWindow::httpReadyRead);

    ProgressDialog *progressDialog = new ProgressDialog(url, this);
    connect(reply, &QNetworkReply::downloadProgress, progressDialog, &ProgressDialog::networkReplyProgress);
    connect(reply, &QNetworkReply::finished, progressDialog, &ProgressDialog::hide);
    progressDialog->show();

标签:QNetworkRequest,HTTP,Qt,示例,QNetworkReply,connect,reply,progressDialog,QNetworkAc
来源: https://blog.csdn.net/u010168781/article/details/110505948

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有