qt利用其他网络接口(如百度AI)获得其算法结果并解析的方法

QNetworkAccessManager ,QNetworkRequest,QNetworkReply,这3个类组合一起可以发出数据请求,然后根据QNetworkReply的应答信号finished来获取请求的数据,可以根据QNetworkReply中readAll来解析所请求的数据,(例如用百度的AI接口可以用来人脸识别, 即我提供数据通过前面的3个类发送请求 然后根据信号finished利用槽函数中QNetworkReply中readAll来获取百度算法计算好的结果,当然请求方法要根据接口要求对应)

QNetworkRequest request; 
    request.setUrl("HTTP....");//设置地址
    request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
    QNetworkReply *reply =mNetworkManager.post(request,QJsonDocument(jsonObject).toJson());
QObject::connect(reply, &QNetworkReply::finished, [=](){
        if(reply->error() == QNetworkReply::NoError){
            QByteArray responseData = reply->readAll();//请求没有错误 解析所请求的内容
            responseJson(QJsonDocument::fromJson(responseData).object());}
  1. QNetworkAccessManager
    • 这是一个管理类,负责发送网络请求并接收响应。你可以创建它的实例来管理多个网络请求。
    • 它提供了多种方法来发送请求,如 get()post()put()delete() 等,这些方法都会返回一个 QNetworkReply 对象。
  2. QNetworkRequest
    • 这个类封装了一个网络请求的所有配置信息,如 URL、请求头(Headers)、请求方法等。
    • 在发送请求之前,你需要创建一个 QNetworkRequest 对象,并设置好所有必要的请求信息。
  3. QNetworkReply
    • 当你通过 QNetworkAccessManager 发送一个请求后,Qt 会创建一个 QNetworkReply 对象来表示这个请求的响应。
    • QNetworkReply 对象会包含响应的状态(如成功、失败、重定向等)、响应头(Headers)以及响应体(Body,即实际的数据)。
    • 你可以通过连接 QNetworkReply 的信号(如 finished()readyRead()errorOccurred() 等)来异步地处理响应。

流程概述

  1. 创建并配置请求
    • 创建一个 QNetworkRequest 对象,并设置其 URL、请求头等信息。
  2. 发送请求
    • 使用 QNetworkAccessManager 的某个发送请求的方法(如 post()),将 QNetworkRequest 对象和请求体(如果有的话)作为参数传递。
    • 这个方法会返回一个 QNetworkReply 对象。
  3. 处理响应
    • 你可以通过连接 QNetworkReply 的 finished() 信号到一个槽函数,来异步地处理响应。
    • 在槽函数中,首先检查是否有错误发生(通过 QNetworkReply::error() 方法)。
    • 如果没有错误,使用 QNetworkReply::readAll() 方法读取响应体,并根据需要进行解析(如解析 JSON、HTML 等)。
  4. 清理
    • 在处理完响应后,不要忘了释放 QNetworkReply 对象。通常的做法是在槽函数中调用 QNetworkReply::deleteLater(),这样它会在事件循环的下一个迭代中被删除。

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值