地址:https://github.com/aeagean/QtNetworkService
作者: aeageanQt君
简介:使用Builder模式封装网络请求接口get, post, put.还加入lambda特性用于网络请求响应

0.寻找这个库的背景

主要是用户的网络可能不稳定,或者存在波动导致暂时断开的情况。此时为了保证下载成功,且减少下载时间,断点续传就很有用了。

1. 如何使用?

  • 采用header-only的方式实现。只需在你的工程中包含 src 目录的 HttpClient.h 文件即可。

    2. 使用示例

    1. HttpClient client;
    2. client.get("https://qthub.com")
    3. .onSuccess([](QString result) { qDebug()<<"result:"<<result; })
    4. .onFailed([](QString err) { qDebug()<<"error:"<<err; })
    5. .exec();

3. 支持的特性

  • 使用信号槽的方式实现成功与失败的事件处理
  • 使用匿名函数的方式实现成功与失败的事件处理
  • 以信号槽的方式获取下载进度
  • 以匿名函数的方式获取下载进度
  • 支持Post上传文件并获取上传进度
  • 支持下载文件并获取下载进度
  • 自定义超时时间和超时处理
  • 可以添加head、params、body
  • 支持失败重试
  • 支持重复请求
  • 支持身份验证


4. 实测效果

  1. 断网之后再连接网络,会自动重连,很棒。
  2. 如果是需要VPN才能访问的地址,未开VPN的情况下,开启了下载,此时再开启VPN也是无法下载的。应该是在别的地方需要再设置,暂未深入研究这个。