Qt 调用讯飞翻译

 将appid appkey appsecret替换即可,只是简单的调用,自己封装,源代码https://download.csdn.net/download/yonggandess/35319430https://download.csdn.net/download/yonggandess/35319430

#include "dialog.h"
#include "ui_dialog.h"
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include Dialog::Dialog(QWidget *parent): QDialog(parent), ui(new Ui::Dialog)
{ui->setupUi(this);qDebug()<< getUrl("你好,我是中国人","cn","en");
}Dialog::~Dialog()
{delete ui;
}QString Dialog::getUrl(const QString &msg,const QString&from,const QString&to )
{const QString apisecret = "";const QString apikey    = "";const QString appid     = "";//用小牛翻译还是普通翻译bool useniuTrans = true;QString trans = useniuTrans ? "ntrans" : "itrans";QString ts = useniuTrans ? "ots" : "its";QString host = QString("%1.xfyun.cn").arg(trans);QString url = QString("https://%1/v2/%2").arg(host).arg(ts);QString format = "ddd, dd MMM yyyy HH:mm:ss";QLocale loc = QLocale(QLocale::English, QLocale::UnitedStates);QDateTime t = QDateTime::currentDateTime();QString dateString = loc.toString(t.toUTC(), format) + " GMT";QString digest = "SHA-256=";QByteArray hash256Base64 = QCryptographicHash::hash(getJson(msg,from,to,appid).toUtf8(),QCryptographicHash::Sha256).toBase64();digest += hash256Base64;QString signature_origin = "host: " + host + "\n";signature_origin += "date: " + dateString + "\n";signature_origin += "POST " + QString("/v2/%1 ").arg(ts) + "HTTP/1.1" + "\n";signature_origin += "digest: " + digest;QByteArray s_o = NULL, api = NULL;QByteArray signature = QMessageAuthenticationCode::hash(s_o.append(signature_origin),api.append(apisecret), QCryptographicHash::Sha256).toBase64();//签名信息QString authorization = "api_key=\"";authorization += apikey + "\"";authorization += ",algorithm=";authorization += "\"hmac-sha256\"";authorization += ",headers=";authorization += "\"host date request-line digest\"";authorization += ",signature=\"";authorization += signature + "\"";QList> formData;formData.append(QPair{"Content-Type","application/json"});formData.append(QPair{"Accept","application/json,version=1.0"});formData.append(QPair{"Host",QString("%1.xfyun.cn").arg(trans)});formData.append(QPair{"Date",dateString});formData.append(QPair{"Digest",digest});formData.append(QPair{"Authorization",authorization});QString result;QByteArray body_ = getJson(msg,from,to,appid).toUtf8();//postQByteArray  responseData = this->post(url,formData,body_);//json解析QString res_;QJsonObject root =  QJsonDocument::fromJson(responseData).object();int code = root.value("code").toInt();if(0 == code) {QJsonObject dataObj = root.value("data").toObject();QJsonObject resultObj = dataObj.value("result").toObject();res_ = resultObj.value("trans_result").toObject().value("dst").toString();}else{qDebug()<<"ifly trans error!";}return res_;
}QString Dialog::getJson(const QString &msg, const QString &from, const QString &to,const QString&appid)
{//commonQJsonObject commonObj;commonObj.insert("app_id",appid);//businessQJsonObject businessObj;businessObj.insert("from",from);businessObj.insert("to",to);//dataQJsonObject dataobj;dataobj.insert("text",QString(msg.toUtf8().toBase64()));QJsonObject obj;obj.insert("common",QJsonValue(commonObj));obj.insert("business",QJsonValue(businessObj));obj.insert("data",QJsonValue(dataobj));return QString(QJsonDocument(obj).toJson()).simplified();
}QByteArray Dialog::post(const QString &url, QList> header, const QByteArray &body)
{QUrl url_(url);QNetworkRequest request(url_);for(auto item : header)request.setRawHeader(item.first.toUtf8(),item.second.toUtf8());QNetworkAccessManager manager;QNetworkReply* reply = manager.post(request,body);QEventLoop loop;connect(reply,&QNetworkReply::finished,&loop,&QEventLoop::quit);loop.exec();QByteArray responseData = reply->readAll();delete reply;reply = nullptr;return responseData;
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部