首页 > 技术 > 机器人

QT项目-图灵机器人 | 图灵机器人官网

人阅读 2023-10-22 08:23:59

【QT项目-图灵机器人 | 图灵机器人官网】lot物联网小编为你整理了的相关内容,希望能为你解答。

1.登陆图灵机器人官网注册一个图灵机器人2.获取apikey3.pro文件添加Qt = core gui network4.头文件#include <QNetworkAccessManager> //三个http必须头文件#include <QNetworkReply>#include <QNetworkRequest>5.widget.h文件#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QNetworkAccessManager> //三个http必须头文件#include <QNetworkReply>#include <QNetworkRequest>namespace Ui {class Widget;}class Widget : public QWidget{ Q_OBJECTpublic: explicit Widget(QWidget *parent = nullptr); ~Widget(); QNetworkAccessManager *manager; QNetworkReply *reply; QNetworkRequest *requst; QjsonObject *JsonData; //封装的json信息 QString getJson(); //解析返回的json信息 void Json_data(); //封装json信息private slots: void doProcessReadyRead(); void on_pushButton_clicked(); void doProceesFinished();private: Ui::Widget *ui;};#endif // WIDGET_H6.widget.cpp文件#include "widget.h"#include "ui_widget.h"#include <QDebug>#include <QFile>#include <QPixmap>#include <QJsonObject> //json#include <QJsondocument>#include <QJsonArray>#include <QJsonObject>Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget){ ui->setupUi(this); Json_data(); manager = new QNetworkAccessManager(this); requst = new QNetworkRequest;}Widget::~Widget(){ delete ui;}/* HTTP通信 */void Widget::on_pushButton_clicked(){ requst->setUrl(QUrl("http://openapi.tuling123.com/openapi/api/v2")); //填入图灵机器人接口地址 requst->setHeader(QNetworkRequest::ContentTypeHeader,"application/json"); //设置数据类型为json格式 QJsonDocument document=QJsonDocument(*JsonData); //将封装的json格式数据转为字节数组形式 QByteArray array = document.toJson(); reply = manager->post(*requst,array); //以post方式发送请求 connect(reply, &QIODevice::readyRead, this, &Widget::doProcessReadyRead); //收到返回信息则发出可读信号 connect(reply, QOverload<QNetworkReply::NetworkError>::of(&QNetworkReply::error), //出现异常 [=](QNetworkReply::NetworkError code) { switch((int)code) { case QNetworkReply::ConnectionRefusedError: qDebug() << "远程服务器拒绝连接(服务器不接受请求)"; break; case QNetworkReply::HostNotFoundError: qDebug() << "找不到远程主机名(无效的主机名)"; break; case QNetworkReply::TimeoutError: qDebug() << "与远程服务器的连接超时"; break; default: break; } }); connect(reply, &QNetworkReply::finished,this,&Widget::doProceesFinished);}/* 获取信息 */void Widget::doProcessReadyRead(){ QString text = getJson(); //解析返回的json信息 ui->textEdit->append(text); qDebug() << text;}/* 封装要发送的json格式信息 */void Widget::Json_data(){ QJsonObject provideInfo; QJsonObject Text; QJsonObject Image; QJsonObject Info; QJsonObject UserLocation; QString data = ui->lineEdit->text(); //输入发送的信息 Text.insert("text",data); UserLocation.insert("city","成都"); //后面这一块不必须 UserLocation.insert("province","四川"); UserLocation.insert("street","武侯区"); Info.insert("location",UserLocation); provideInfo.insert("inputText",Text); provideInfo.insert("inputImage",Image); provideInfo.insert("selfInfo",Info); QJsonObject user; user.insert("apiKey","2b244339acb64a3d8a8e1b4455a21ead"); // 填入自己注册的图灵机器人apiKey 必须 user.insert("userId",""); //填入 id,必须,否则会显示---没有上传userId! JsonData = new QJsonObject; JsonData->insert("reqType",0); JsonData->insert("perception",provideInfo); //嵌套 JsonData->insert("userInfo",user); qDebug() << *JsonData;}/* 解析返回的json格式信息 */QString Widget::getJson(){ QByteArray str = reply->readAll(); //获取信息 QJsonObject json1 = QJsonDocument::fromJson(str).object(); QJsonArray json2 = json1.value("results").toArray(); QJsonObject json3 = json2[0].toObject(); //直接通过下标获取// QJsonObject json3;// for ( int i = 0; i < json2.size(); i ) //循环遍历获取// {// if ( json2[ i ].isObject() )// {// json3 = json2[i].toObject();// qDebug() << i;// }// } QJsonObject json4 = json3.value("values").toObject(); QString text = json4.value("text").toString(); return text;}void Widget::doProceesFinished(){ qDebug() <<"结束";}7.widget.ui文件

点击领取Qt学习资料 视频教程~「链接」

以上内容为【QT项目-图灵机器人 | 图灵机器人官网】的相关内容,更多相关内容关注lot物联网。

LOT物联网

iot产品 iot技术 iot应用 iot工程

Powered By LOT物联网  闽ICP备2024036174号-1

联系邮箱:support1012@126.com