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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值