Qt HTTP和HttpServer

简介: Qt HTTP和HttpServer

HTTP

一、描述

1.Qt网络访问 API 是围绕 QNetworkAccessManager 对象构建的,该对象保存它发送的请求的通用配置和设置。一个 QNetworkAccessManager 实例应该足以满足整个 Qt 应用程序网络访问的需求。 由于 QNetworkAccessManager 是基于 QObject 的,所以只能在它所属的线程中使用。

2、一旦创建了 QNetworkAccessManager 对象,应用程序就可以使用它通过网络发送请求。它提供了一组标准函数,它们接受一个请求和可选数据,每个函数都返回一个 QNetworkReply 对象。返回的对象用于获取响应相应请求而返回的任何数据。

可以通过以下方式完成简单的网络下载:

 QNetworkAccessManager *manager = new QNetworkAccessManager(this);
 connect(manager, &QNetworkAccessManager::finished, this, &MyClass::replyFinished);
 manager->get(QNetworkRequest(QUrl("http://qt-project.org")));

3、QNetworkAccessManager 有一个异步 API。 当上面的 replyFinished 槽函数被调用时,它采用的参数是 QNetworkReply 对象,包含下载的数据以及元数据(标题等)。


注意:请求完成后,用户有责任在适当的时候删除 QNetworkReply 对象。不要在连接到finished()的slot里面直接删除,可以使用 deleteLater() 函数。


注意: QNetworkAccessManager 将它收到的请求排入队列。 并行执行的请求数量取决于协议。 目前,对于桌面平台上的 HTTP 协议,一个主机/端口组合并行执行 6 个请求。


一个更复杂的例子:

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

Qt网络编程:QNetworkAccessManager

Qt发起http请求,get和post方式,并接收响应数据

HttpServer

Qt开发的轻量级http服务器-QtHttpServer编译

下载QtHttpServer源码 https://github.com/qt-labs/qthttpserver


下载第三方依赖http-parser源码

https://github.com/nodejs/http-parser

目录
相关文章
|
4月前
Qt http的认证方式以及简单实现
以上就是Qt实现HTTP认证的基本步骤。需要注意的是,以上代码未进行错误处理,实际使用时需要根据具体情况进行相应的错误处理。
103 1
|
6月前
|
网络协议 网络安全 API
Qt 网络编程之美:探索 URL、HTTP、服务发现与请求响应
Qt 网络编程之美:探索 URL、HTTP、服务发现与请求响应
694 1
|
6月前
|
监控 网络安全 C++
Qt 5.14.2 网络编程揭秘:构建高效HTTP客户端与文件下载器
Qt 5.14.2 网络编程揭秘:构建高效HTTP客户端与文件下载器
442 0
|
6月前
|
存储 JSON 前端开发
QT Http协议
QT Http协议
102 0
|
Android开发
qt打包安卓报http请求错误
qt打包安卓报http请求错误
78 0
|
存储 缓存 JavaScript
Qt+QtWebApp开发笔记(六):http服务器html实现静态相对路径调用第三方js文件
为了解决调用一些依赖的如echarts等一些js的代码模块引入的问题,就需要静态文件了。 本篇解说StaticFileController,在返回的html文本中调用外部js文件,类似的,其他文件都是一样了,只是引入的后缀名不一样。
Qt+QtWebApp开发笔记(六):http服务器html实现静态相对路径调用第三方js文件
|
Ubuntu IDE Java
Qt+QtWebApp开发笔记(一):QtWebApp介绍、下载和搭建基础封装http轻量级服务器Demo
在arm上做了Qt的应用程序,为了在局域网实现web页的访问方式来配置arm上Qt的程序,局域网轻量级http服务器是很好的实现方式之一,有机会做国产麒麟上Qt的http服务器,正好接触到了QtWebApp可以实现。   本篇实战解说QtWebApp的轻量级Demo。   本篇篇幅较长,为了保持基础的完整性将必要的东西都放在本篇。
|
XML JSON 前端开发
Qt+QtWebApp开发笔记(五):http服务器html中使用json触发ajax与后台交互实现数据更新传递
前面完成了页面的跳转、登录,很多时候不刷新页面就想刷新局部数据,此时ajax就是此种技术,且是异步的。   本篇实现网页内部使用js调用ajax实现异步交互数据。   在js中使用 ajax是通过XMLHttpRequest来实现的。
|
存储 C# 数据库
Qt+QtWebApp开发笔记(四):http服务器使用Session和Cookie实现用户密码登录和注销功能
前面实现了基础的跳转,那么动态交互中登录是常用功能。本篇实现一个动态交互的简单登录和注销功能,在Qt中使用Session和Cookie技术。
|
Java C++
Qt+QtWebApp开发笔记(二):http服务器日志系统介绍、添加日志系统至Demo测试
上一篇使用QtWebApp的基于Qt的轻量级http服务器实现了一个静态网页返回的Demo,网页服务器很重要的就是日志,因为在服务器类上并没有直接返回,所以,本篇先把日志加上。