访问图灵机器人需要api_key,所以开始之前可以去图灵官网申请一个免费的账号。
访问服务器需要利用到网络,,要在.pro文件中加入 QT +=network;
图灵服务器返回数据为JASOn格式,我们先在.pro文件中加入 QT+=script
我这个例子是 输入一个问题,发送去图灵服务器,服务器返回JSAON格式的答案,我们解析后就得到了想要的答案了(图灵机器人就是起到了一个知识库的作用)。
话不多说,上代码!我就是这么直接:
mainwindow.h中的代码:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include<QtNetwork>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_btnSend_clicked();
void replyFinish(QNetworkReply *);
void on_readyRead();
void on_btnClear_clicked();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
mainwindow.cpp中的代码:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QString"
#include<QDebug>
#include<QJsonDocument>
#include<QJsonParseError>
#include<QtScript/QScriptEngine>
#include <QScriptValueIterator>
static const QString URL="http://www.tuling123.com/openapi/api";
static const QString API_KEY="f1010e41af694f95a6839dd85282af44";
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->input->setText("你是谁");
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_btnSend_clicked()
{
ui->output->setText("");
QString Url=URL+"?key="+API_KEY+"&info="+ui->input->text().trimmed();
//qDebug()<<Url;
QUrl url;
url.setUrl(Url);
QNetworkRequest request(url);
QNetworkAccessManager *manager=new QNetworkAccessManager(this);
QNetworkReply *reply=manager->get(request);
connect(manager,SIGNAL(finished(QNetworkReply *)),this,SLOT(replyFinish(QNetworkReply *)));
connect(reply,SIGNAL(readyRead()),this,SLOT(on_readyRead()));
}
void MainWindow::replyFinish(QNetworkReply * reply)
{
QString data=reply->readAll();
QString strText="";
QScriptValue jsontext;
QScriptEngine engineText;
jsontext=engineText.evaluate("value="+data);
QScriptValueIterator iteratorText(jsontext);
while(iteratorText.hasNext())
{
iteratorText.next();
if(iteratorText.name()=="text")
{
strText=iteratorText.value().toString();
ui->output->setText(strText);
break;
}
}
//ui->output->setText(data);
}
void MainWindow::on_readyRead()
{
//qDebug()<<"111111111111";
}
void MainWindow::on_btnClear_clicked()
{
ui->input->clear();
ui->output->clear();
}
最后上传一张效果图: