QT开发中文网

Qt C++ 实现http 客户端 请求地址10.29.3.110:7022/jeecg-boot/360check/tServerCameraConfig/getServerCameraConfig 请求方式:get 请求参数:无 返回参数示例: { "success": true, "message": "操作成功!", "code": 200, "result": [ { "id": 1, "serverName": "11", //...

要在Qt中实现一个HTTP客户端,您可以使用Qt的网络模块(QNetworkAccessManager)来发送GET请求。以下是一个示例代码,演示如何请求您提供的URL并处理返回的JSON响应。

确保您已经包含了必要的头文件,并且在项目文件中链接了Qt Network模块。

示例代码

#include <QCoreApplication>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
#include <QObject>

class HttpClient : public QObject {
    Q_OBJECT

public:
    HttpClient(QObject *parent = nullptr) : QObject(parent) {
        manager = new QNetworkAccessManager(this);
        connect(manager, &QNetworkAccessManager::finished, this, &HttpClient::onReplyFinished);
    }

    void getServerCameraConfig() {
        QUrl url("http://10.29.3.110:7022/jeecg-boot/360check/tServerCameraConfig/getServerCameraConfig");
        QNetworkRequest request(url);

        // 发送GET请求
        manager->get(request);
    }

private slots:
    void onReplyFinished(QNetworkReply *reply) {
        if (reply->error() != QNetworkReply::NoError) {
            qDebug() << "Error:" << reply->errorString();
            return;
        }

        // 读取返回的数据
        QByteArray responseData = reply->readAll();
        
        // 解析JSON数据
        QJsonDocument jsonDoc = QJsonDocument::fromJson(responseData);
        
        if (!jsonDoc.isNull()) {
            QJsonObject jsonObj = jsonDoc.object();

            bool success = jsonObj["success"].toBool();
            QString message = jsonObj["message"].toString();
            int code = jsonObj["code"].toInt();

            qDebug() << "Success:" << success;
            qDebug() << "Message:" << message;
            qDebug() << "Code:" << code;

            if (jsonObj.contains("result") && jsonObj["result"].isArray()) {
                QJsonArray resultArray = jsonObj["result"].toArray();
                for (const auto &item : resultArray) {
                    QJsonObject serverInfo = item.toObject();
                    qDebug() << "ID:" << serverInfo["id"].toInt();
                    qDebug() << "Server Name:" << serverInfo["serverName"].toString();
                    qDebug() << "Server Address:" << serverInfo["serverAddress"].toString();
                    qDebug() << "Camera:" << serverInfo["camera"].toString();
                    qDebug() << "Model Path:" << serverInfo["modelPath"].toString();
                    qDebug() << "Create Time:" << serverInfo["createTime"].toString();
                }
            }
            
            // 您还可以处理其他字段,比如timestamp和data...
            
        } else {
            qDebug() << "Failed to parse JSON.";
        }

        reply->deleteLater();  // 清理回复对象
    }

private:
    QNetworkAccessManager *manager;
};

int main(int argc, char *argv[]) {
    QCoreApplication a(argc, argv);

    HttpClient client;
    client.getServerCameraConfig();

    return a.exec();  // 启动事件循环
}

#include "main.moc"

注意事项:

  1. 确保正确配置项目:在您的 .pro 文件中添加 Qt 网络模块支持:

    QT += network
    
  2. 主线程与信号槽机制:这个例子利用了Qt的信号槽机制,在异步操作完成后处理结果。

  3. 调试信息qDebug()用于输出调试信息,可以根据需要调整输出内容或格式。

  4. 错误处理:请注意异常情况,例如网络错误、JSON解析失败等,这里简单地通过调试信息输出了错误,实际应用中可能需要更复杂的错误处理逻辑。

希望这个示例能帮助您实现所需功能!


内容由零声教学AI助手提供,问题来源于学员提问

目录导航
  • 示例代码
  • 注意事项:
  • 本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
    转载请注明出处:http://qt.0voice.com/?id=13411

    分享:
    扫描分享到社交APP
    上一篇
    下一篇
    发表列表
    游客 游客
    此处应有掌声~
    评论列表

    还没有评论,快来说点什么吧~

    联系我们

    在线咨询: 点击这里给我发消息

    微信号:3007537140

    上班时间: 10:30-22:30

    关注我们
    x

    注册

    已经有帐号?