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

本文涉及的产品
数据传输服务 DTS,数据迁移 small 3个月
推荐场景:
MySQL数据库上云
数据传输服务 DTS,数据同步 1个月
简介:  新建项目T12HttpClient T12HttpClient.pro SOURCES += \     main.cpp   QT += network CONFIG += C++11 main.cpp #in

  1. 新建项目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数据给服务器!

 

相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
Sqoop 企业级大数据迁移方案实战
Sqoop是一个用于在Hadoop和关系数据库服务器之间传输数据的工具。它用于从关系数据库(如MySQL,Oracle)导入数据到Hadoop HDFS,并从Hadoop文件系统导出到关系数据库。 本课程主要讲解了Sqoop的设计思想及原理、部署安装及配置、详细具体的使用方法技巧与实操案例、企业级任务管理等。结合日常工作实践,培养解决实际问题的能力。本课程由黑马程序员提供。
目录
相关文章
|
1月前
|
JSON 前端开发 Java
Json格式数据解析
Json格式数据解析
|
2月前
|
存储 JSON Apache
揭秘 Variant 数据类型:灵活应对半结构化数据,JSON查询提速超 8 倍,存储空间节省 65%
在最新发布的阿里云数据库 SelectDB 的内核 Apache Doris 2.1 新版本中,我们引入了全新的数据类型 Variant,对半结构化数据分析能力进行了全面增强。无需提前在表结构中定义具体的列,彻底改变了 Doris 过去基于 String、JSONB 等行存类型的存储和查询方式。
揭秘 Variant 数据类型:灵活应对半结构化数据,JSON查询提速超 8 倍,存储空间节省 65%
|
4天前
|
XML JSON API
转Android上基于JSON的数据交互应用
转Android上基于JSON的数据交互应用
|
12天前
|
JSON JavaScript Java
从前端Vue到后端Spring Boot:接收JSON数据的正确姿势
从前端Vue到后端Spring Boot:接收JSON数据的正确姿势
22 0
|
14天前
|
JSON 数据格式 Python
Python标准库中包含了json模块,可以帮助你轻松处理JSON数据
【4月更文挑战第30天】Python的json模块简化了JSON数据与Python对象之间的转换。使用`json.dumps()`可将字典转为JSON字符串,如`{&quot;name&quot;: &quot;John&quot;, &quot;age&quot;: 30, &quot;city&quot;: &quot;New York&quot;}`,而`json.loads()`则能将JSON字符串转回字典。通过`json.load()`从文件读取JSON数据,`json.dump()`则用于将数据写入文件。
18 1
|
14天前
|
JSON 数据格式 Python
Python处理JSON数据
【4月更文挑战第30天】该内容介绍了Python处理JSON数据的三个方法:1)使用`json.loads()`尝试解析字符串以验证其是否为有效JSON,通过捕获`JSONDecodeError`异常判断有效性;2)通过`json.dumps()`的`indent`参数格式化输出JSON数据,使其更易读;3)处理JSON中的日期,利用`dateutil`库将日期转换为字符串进行序列化和反序列化。
23 4
|
17天前
|
存储 JSON 数据处理
|
19天前
|
JSON 数据可视化 定位技术
python_将包含汉字的字典数据写入json(将datav的全省数据中的贵州区域数据取出来)
python_将包含汉字的字典数据写入json(将datav的全省数据中的贵州区域数据取出来)
19 0
|
27天前
|
JSON JavaScript 数据格式
vue展示json数据,vue-json-viewer的使用
vue展示json数据,vue-json-viewer的使用
31 0
|
1月前
|
存储 JSON JavaScript
「Python系列」Python JSON数据解析
在Python中解析JSON数据通常使用`json`模块。`json`模块提供了将JSON格式的数据转换为Python对象(如列表、字典等)以及将Python对象转换为JSON格式的数据的方法。
35 0

推荐镜像

更多