ubuntu下用qt访问服务器(以图灵机器人为例)


     访问图灵机器人需要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();
}

最后上传一张效果图:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值