Qt使用HTTP通信(以调用百度翻译api为例)

HTTP是超文本传输协议,它是一种文件传输协议。

Qt使用HTTP主要用到以下三个类:

  1. QNetworkAccessManager 该类允许应用发送网络请求并接收响应。
  2. QNetworkRequest 该类包含了一个由QNetworkAccessManager发送的请求。
  3. QNetworkReply 该类包含接收到的数据部分和QNetworkAccessManager发送请求的头部。

主要步骤:

  1. 工程文件.pro里必须有network
    QT       += core gui network

  2. 阅读百度翻译api帮助文档,定义请求体各段内容:
    QString MainWindow::API = "http://api.fanyi.baidu.com/api/trans/vip/translate?";
    QString MainWindow::from = "en";
    QString MainWindow::to = "zh";
    QString MainWindow::appid=输入你申请的id;
    QString MainWindow::salt="1435660288";
    QString MainWindow::password = 输入你申请的password;

  3. 定义请求成功后的槽函数并在cpp文件中自行实现:
    public slots:
        void replyFinished(QNetworkReply *);

  4. 拼接百度翻译pai请求内容:
        q = word;  //word为要翻译的单词
        QString url;
        sign = md5(appid+q+salt+password);//自定义md5函数,该函数返回md5加密后的字符串            url = API + "q=" + q + "&from="+ from +"&to=" + to + "&appid=" + appid +"&salt=" +  salt + "&sign=" + sign;
        manager = new QNetworkAccessManager(this);
        connect(manager,&QNetworkAccessManager::finished,this,&MainWindow::replyFinished);
        manager->get(QNetworkRequest(QUrl(url.toUtf8())));//发送请求
  5. 在自定义槽函数中解析返回的json格式数据:
    void MainWindow::replyFinished(QNetworkReply *reply){
        QString all = reply->readAll();
        qDebug()<deleteLater();
    }
    

本例配合Qt图形界面使用,完整代码不便贴出,有问题欢迎讨论。

你可能感兴趣的:(编程经验)