Qt Post人脸认证(阿里云,腾讯云)

使用Qt通过Post发送Json格式数据

一.问题记录

1.请求头查询(使用QUrlQuery而不是setRawHeader)。
2.查询无返回结果(增加libcrypto-1_1.dll、libssl-1_1.dll)。
3.发送图片(QImage转base64)。

二.代码(阿里云)

阿里云

2.1 Post请求

#include <QtNetwork>
#include <QUrlQuery>
#include <QNetworkRequest>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QEventLoop>

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

    QString host = "https://vidface.market.alicloudapi.com";
    QString path = "/lundear/idface";
    QString method = "POST";
    QString appcode = "你自己的AppCode";

    QUrl url(host + path);
    QNetworkRequest request(url);
    request.setRawHeader("Authorization", QString("APPCODE " + appcode).toUtf8());
    request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded; charset=UTF-8");

    QUrlQuery postData;
    postData.addQueryItem("idcard", "110221197802151611");
    postData.addQueryItem("image", "%2F9j%2F4AAQSkZJRgABAQEAYABgAA");
    postData.addQueryItem("liveck", "0");
    postData.addQueryItem("name", "%E5%BC%A0%E4%BC%9F");
    postData.addQueryItem("url", "url");

    QNetworkAccessManager manager;
    QNetworkReply *reply = manager.post(request, postData.query(QUrl::FullyEncoded).toUtf8());

    QEventLoop loop;
    QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
    loop.exec();

    QByteArray response = reply->readAll();
    qDebug() << response;

    reply->deleteLater();
    return a.exec();
}

2.2 解析json

#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonParseError>
#include <QDebug>

int main()
{
    QString jsonStr = R"({
        "code": 0,
        "desc": "身份证号与姓名匹配,照片系统判断为同一人",
        "similarity": 95,
        "data": {
            "birthday": "1993-03-02",
            "address": "浙江省-丽水市-莲都区",
            "sex": "男"
        }
    })";

    // 解析JSON
    QJsonParseError error;
    QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonStr.toUtf8(), &error);

    if (error.error != QJsonParseError::NoError) {
        qDebug() << "JSON解析错误:" << error.errorString();
        return 1;
    }

    // 转换为对象
    QJsonObject jsonObj = jsonDoc.object();

    // 获取字段值
    int code = jsonObj["code"].toInt();
    QString desc = jsonObj["desc"].toString();
    int similarity = jsonObj["similarity"].toInt();

    QJsonObject dataObj = jsonObj["data"].toObject();
    QString birthday = dataObj["birthday"].toString();
    QString address = dataObj["address"].toString();
    QString sex = dataObj["sex"].toString();

    // 打印结果
    qDebug() << "code:" << code;
    qDebug() << "desc:" << desc;
    qDebug() << "similarity:" << similarity;
    qDebug() << "birthday:" << birthday;
    qDebug() << "address:" << address;
    qDebug() << "sex:" << sex;

    return 0;
}

三.代码(腾讯云)

腾讯云

3.1 Post请求

3.2 解析json

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
乌班图下Qt MQTT接入阿里云需要以下步骤: 第一步,下载并安装Qt MQTT库。在Ubuntu系统中,可以通过apt-get命令安装mqtt库的开发包: ``` sudo apt-get install libqt5mqtt5-dev ``` 第二步,创建一个基于Qt的工程并添加mqtt库的依赖。在Qt Creator中,可以通过以下步骤添加mqtt库: 1. 打开Qt Creator,点击"文件"->"新建文件或项目"->"其他项目"->"空项目"。 2. 在项目向导中,填写项目名称和保存路径,点击"下一步"。 3. 在"包含要添加的库"选项中,勾选"MQTT"。 4. 点击"下一步",然后点击"完成"。 第三步,编写Qt代码以实现与阿里云MQTT的接入。在代码中,你需要设置与阿里云MQTT服务器的连接信息,例如服务器IP地址、端口号、设备ID、用户名和密码等。然后建立与服务器的连接,订阅和发布相应的主题以进行消息的接收和发送。 以下是一个简单的示例代码: ```cpp #include <QCoreApplication> #include <QDebug> #include <QMQTT/Client> #include <QMQTT/Message> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QMQTT::Client client("your_server_ip", 1883); // 设置阿里云MQTT服务器的IP地址和端口号 client.setClientId("your_device_id"); // 设置设备ID client.setUsername("your_username"); // 设置用户名 client.setPassword("your_password"); // 设置密码 QObject::connect(&client, &QMQTT::Client::connected, [&client]() { qDebug() << "Connected to the MQTT server."; client.subscribe("your_topic"); // 订阅相应的主题 }); QObject::connect(&client, &QMQTT::Client::disconnected, []() { qDebug() << "Disconnected from the MQTT server."; }); QObject::connect(&client, &QMQTT::Client::received, [](const QMQTT::Message &message) { qDebug() << "Received message:" << message.payload(); }); client.connectToHost(); // 建立与阿里云MQTT服务器的连接 return a.exec(); } ``` 在这个例子中,我们通过`client.connectToHost()`建立与阿里云MQTT服务器的连接,然后使用`client.subscribe()`方法订阅相应的主题以接收消息。当接收到消息时,会触发`received`信号,然后我们就可以通过`message.payload()`获取到消息内容。 最后,在Qt Creator中编译和运行代码,即可实现乌班图下Qt MQTT接入阿里云
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值