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服務(wù)器 ??? 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(); } |
| 運行結(jié)果:
|
| ? |
| Json數(shù)據(jù)傳輸 |
| #include <QCoreApplication> #include <QNetworkAccessManager> #include <QNetworkRequest> #include <QNetworkReply> #include <QJsonObject> #include <QJsonDocument> ? /** * json 數(shù)據(jù)傳輸 * @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(); } |
| 關(guān)于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的方式順便發(fā)送Json數(shù)據(jù)給服務(wù)器! |
?
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的5.QT中关于HTTPClient相关的操作,Json数据传输的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 二手八个螺丝的电动车能卖多少钱?
- 下一篇: 1.QT中播放视频,录音程序的编写