日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

5.QT中关于HTTPClient相关的操作,Json数据传输

發布時間:2024/9/27 c/c++ 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 5.QT中关于HTTPClient相关的操作,Json数据传输 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  • 新建項目T12HttpClient

  • T12HttpClient.pro

    SOURCES += \

    ??? main.cpp

    ?

    QT += network

    CONFIG += C++11

    main.cpp

    #include <QCoreApplication> #include <QNetworkAccessManager> #include <QNetworkRequest> #include <QNetworkReply> ? int main(int argc,char* argv[]) { ??? QCoreApplication app(argc, argv); ??? QNetworkAccessManager* manager = new QNetworkAccessManager; ? QNetworkRequest req; //這里,我訪問的是tomcat服務器 ??? req.setUrl(QUrl("http://localhost:8080/")); ??? manager->get(req); ??? QObject::connect(manager, &QNetworkAccessManager::finished, [](QNetworkReply* reply){ ??????? if(reply->error() != QNetworkReply::NoError) ??????? { ??????????? qDebug() << "Error:" << reply->errorString(); ??????????? return; ??????? } ??????? QByteArray buf = reply->readAll(); ??????? qDebug() << "OK:"<< buf; ??? }); ? ??? return app.exec(); }

    運行結果:

    ?

    Json數據傳輸

    #include <QCoreApplication> #include <QNetworkAccessManager> #include <QNetworkRequest> #include <QNetworkReply> #include <QJsonObject> #include <QJsonDocument> ? /** * json 數據傳輸 * @brief main * @param argc * @param argv * @return ?*/ int main(int argc,char* argv[]) { ??? QCoreApplication app(argc, argv); ??? QNetworkAccessManager* manager = new QNetworkAccessManager; ? ??? QJsonObject obj; ??? obj.insert("username", QString("tuzuoquan")); ??? obj.insert("password", QString("tuzuoquan's password")); ? ??? QNetworkRequest req; ??? req.setUrl(QUrl("http://XXX/test.cgi")); ??? manager->post(req, QJsonDocument(obj).toJson()); ??? QObject::connect(manager, &QNetworkAccessManager::finished, [](QNetworkReply* reply){ ??????? if(reply->error() != QNetworkReply::NoError) ??????? { ??????????? qDebug() << "Error:" << reply->errorString(); ??????????? return; ??????? } ??????? QByteArray buf = reply->readAll(); ??????? qDebug() << "OK:"<< buf; ??? }); ? ??? return app.exec(); }

    關于cgi的代碼

    ?

    #include <stdio.h>

    #include <unistd.h>

    ?

    #include <QCoreApplication>

    #include <QTcpSocket>

    #include <QJsonDocument>

    #include <QJsonObject>

    #include <QProcessEnvironment>

    ?

    ?

    int main(int argc, char* argv[])

    {

    ??? printf("Content-type:text/html\n\n");

    ??? QCoreApplication app(argc, argv);

    ?

    ??? QProcessEnvironment envir =

    ??????? QProcessEnvironment::systemEnvironment();

    ?

    ??? int contentLen = envir.value("CONTENT_LENGTH").toInt();

    ??? QTcpSocket socket;

    ?

    ??? socket.setSocketDescriptor(STDIN_FILENO,

    ??????????? QTcpSocket::ConnectedState,

    ??????????? QTcpSocket::ReadOnly);

    ?

    ??? QByteArray buf;

    ???

    ??? QObject::connect(&socket, &QTcpSocket::readyRead, [&](){

    ??????????????? buf += socket.readAll();

    ??????????????? if(buf.size()? == contentLen)

    ??????????????? {

    ??????????????????? QJsonDocument doc = QJsonDocument::fromJson(buf);

    ??????????????????? QJsonObject obj = doc.object();

    #if 1

    ??????????????????? QString username = obj.value("username").toString();

    ??????????????????? QString password = obj.value("password").toString();

    ??????????????????? printf("username is %s; password is %s",

    ??????????????????????? username.toUtf8().data(), password.toUtf8().data());

    #else

    ??????????????????? QSqlTableModel model;

    ??????????????????? model.setTable("tuser");

    ??????????????????? model.setFilter("username='xx'");

    ??????????????????? model.select();

    ??????????????????? if(model.rowCount() == 1)

    ??????????????????????? printf("Login success");

    ??????????????????? else

    ??????????????????????? printf("Login Error");

    #endif

    ??????????????????? app.quit();

    ??????????????? }

    ??????????? });

    ?

    ??? return app.exec();

    }

    上面的程序代碼說明,我們可以通過post的方式順便發送Json數據給服務器!

    ?

    與50位技術專家面對面20年技術見證,附贈技術全景圖

    總結

    以上是生活随笔為你收集整理的5.QT中关于HTTPClient相关的操作,Json数据传输的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。