实际项目使用中,出于对Http请求的容错性,多数都会采用请求失败后重试的策略。除新增了失败重试的功能外还提供重复请求的功能。
失败重试
接口:
设置失败请求后的重试次数,默认值为0。
代码语言:javascript复制HttpRequest &retry(int count);
重试次数执行完成后的信号槽/回调。
代码语言:javascript复制HttpRequest &onRetried(const QObject *receiver, const char *method);
HttpRequest &onRetried(std::function<void ()> lambda);
例子:
代码语言:javascript复制client.get("xxx://httpbin.org/get")
.retry(2) // 失败重试的次数
.onRetried([](){qDebug()<<"retried!";}) // 失败重试操作完成后的回调
.onSuccess([](QString result){qDebug()<<result;})
.onFailed([](QString err){qDebug()<<err;})
.exec();
重复请求
接口:
设置需要重复请求的次数,默认值为1。
代码语言:javascript复制HttpRequest &repeat(int count);
重复请求完成后的信号槽/回调。
代码语言:javascript复制HttpRequest &onRepeated(const QObject *receiver, const char *method);
HttpRequest &onRepeated(std::function<void ()> lambda);
例子:
代码语言:javascript复制client.get("https://httpbin.org/get")
.repeat(3) // 总共重复请求的次数
.onRepeated([](){qDebug()<<"repeated!";}) // 重复请求操作完成后的回调
.onSuccess([](QString result){qDebug()<<result;})
.onFailed([](QString err){qDebug()<<err;})
.exec();
源码
- https://github.com/aeagean/QtNetworkService