Qt使用HTTP通信(以调用百度翻译api为例)
来源:互联网 发布:怎么在淘宝上投诉卖家 编辑:程序博客网 时间:2024/06/11 07:29
HTTP是超文本传输协议,它是一种文件传输协议。
Qt使用HTTP主要用到以下三个类:
- QNetworkAccessManager 该类允许应用发送网络请求并接收响应。
- QNetworkRequest 该类包含了一个由QNetworkAccessManager发送的请求。
- QNetworkReply 该类包含接收到的数据部分和QNetworkAccessManager发送请求的头部。
主要步骤:
- 工程文件.pro里必须有network
QT += core gui network
- 阅读百度翻译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;
- 定义请求成功后的槽函数并在cpp文件中自行实现:
public slots: void replyFinished(QNetworkReply *);
- 拼接百度翻译pai请求内容:
q = word; //word为要翻译的单词 QString url; sign = md5(appid+q+salt+password);//自定义md5函数,该函数返回加密后的字符串,使用qt自动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())));//发送请求
- 在自定义槽函数中解析返回数据:
void MainWindow::replyFinished(QNetworkReply *reply){ QString all = reply->readAll(); qDebug()<<all; QJsonParseError jsonError; QJsonDocument json = QJsonDocument::fromJson(all.toUtf8(),&jsonError); if (jsonError.error == QJsonParseError::NoError){ if (json.isObject()){ QJsonObject rootObj = json.object(); if(rootObj.contains("trans_result")){ QJsonValue resultValue = rootObj.value(QString("trans_result")); qDebug()<<resultValue; QString mean = ""; QJsonArray array = resultValue.toArray(); for(int i = 0;i < array.size();i++){ QJsonObject explains = array.at(i).toObject(); if(explains.contains("dst")){ QJsonValue dst = explains.value(QString("dst")); qDebug()<<dst.toString(); mean = mean + dst.toString(); } } qDebug()<<mean;//输出翻译结果 } } } reply->deleteLater();}
本例配合Qt图形界面使用,完整代码不便贴出,有问题欢迎讨论。
阅读全文
0 0
- Qt使用HTTP通信(以调用百度翻译api为例)
- 调用百度翻译API
- UWP应用获取HTTP请求返回的MP3音频文件(以百度语音合成API为例)
- 使用c通过HTTP接口使用百度翻译API
- 百度翻译API的调用
- WINFORM调用百度翻译API
- 如何使用代码调用API接口发送短信?(以SendCloud为例)
- shell下使用php调用百度翻译API
- QT调用百度地图api
- Qt:使用百度翻译API,做全平台的翻译工具
- QtQuick使用百度翻译api
- C#使用百度翻译API
- Android使用百度翻译api
- c#:使用百度翻译API
- 百度翻译API的简单调用
- 仿照网上其他人调用有道翻译API时遇到http通信问题,运用AsynTask
- 如何调用有道翻译API(Java,HTTP)
- 百度翻译API(C#)
- Spring BeanFactory.getBean()流程
- chown 和 chgrp
- bootstrap-table 表头和内容宽度不一致解决办法
- 在 Windows 上设置Git工作空间
- [日常训练] Lost My Music
- Qt使用HTTP通信(以调用百度翻译api为例)
- tensorflow实例(3)--传入量的定义与使用
- 分支管理
- Tensorflow下运行数字识别
- 2017年——迷茫的一年
- HttpServletResponse的说明
- Java运行结果返回的是@加一串乱七八糟时
- 2. Add Two Numbers
- kettle的入门