QT的qnetworkservice,QNetworkAccessManager网络请求,异步和同步阻塞封装,加入lambda和信号槽封装请求响应

QT的qnetworkservice,QNetworkAccessManager网络请求,异步和同步阻塞封装,加入lambda和信号槽封装请求和相应。

 【封装源码下载】

1:示例

  • (1) 简单示例

/* 使用lambda特性 */
static HttpService http;
http.get("https://www.qt.io")
    .onResopnse([](QByteArray result){ qDebug()<<"Result: "<

 

  • (2) 复杂示例

/* 获取音乐url功能,请求嵌套请求 */
static HttpService http;
http.get("http://mobilecdn.kugou.com/api/v3/search/song")
    .queryParam("format", "json")
    .queryParam("keyword", "稻香")
    .queryParam("page", 1)
    .queryParam("pagesize", 3)
    .queryParam("showtype", 1)
    .onResopnse([](QVariantMap result){
        QVariantMap data;
        QList infos;
        if (!result.isEmpty())
            data = result.value("data").toMap();

        if (!data.isEmpty())
            infos = data.value("info").toList();

        static HttpService http;
        foreach (QVariant each, infos) {
            http.get("http://m.kugou.com/app/i/getSongInfo.php")
                .queryParam("cmd", "playInfo")
                .queryParam("hash", each.toMap()["hash"])
                .onResopnse([](QVariantMap result){
                    qDebug()<<"mp3: "<

 

QString strUrl = "http://192.168.0.143:8080/CSMS/hc/api/downloadCallback";

    //拼接json
    QVariantMap map;
    map.insert("keyId",certOperator->getCurDevinfo().strKeyID);
    map.insert("downloadResult",bsuccess?"0":"-1");

    m_service.post(strUrl)
            .header("Content-Type",QVariant("application/json"))
            .jsonBody(QVariant(map))
            .onResopnse([&](QByteArray result)
    {
        qDebug()<<"sealDownloadFeedback::Result: "<

2:如何使用?

  • 以Qt子工程使用.再在其他子工程包含pri文件即可使用;
  • 通过引用库的方式使用.

3:如何启用demo测试?

  • 在QtNetworkService.pro文件中将"#CONFIG += QT_APP_MODE"这一行的#去除即可转为可执行文件形式,在Demo目录的main.cpp为主执行文件,如需要测试接口编辑便可。

 

 【封装源码下载】

 

4:接口的详细说明

 

你可能感兴趣的:(c++,code,qt,code)