- #include "mainwindow.h"
- #include "ui_mainwindow.h"
- #include <QNetwork.h>
- #include <QtDebug>
- #include <QString>
- #include <QJsonObject>
- #include <QJsonDocument>
- #include <QJsonArray>
- #include <QLabel>
- #include <QCryptographicHash>
- MainWindow::MainWindow(QWidget *parent) :
- QMainWindow(parent),
- ui(new Ui::MainWindow)
- {
- ui->setupUi(this);
- connect(network_manager,&QNetworkAccessManager::finished,this,&ReplyFinished);
- }
- MainWindow::~MainWindow()
- {
- delete ui;
- }
- void MainWindow::on_pushButton_clicked()
- {
- QString string = ui->lineEdit->text();
- QString q = string;
- QString from = "auto";
- QString to = "zh";
- QString appid = "xxxxxxxxxxxxxx";
- QString salt = "34542455";
- QString Key = "xxxxxxxxxxxxxxx";
- QString sign1 =appid+q+salt+Key;
- // QString str = QString("%1%2%3%4")
- // .arg(appid).arg(q).arg(salt).arg(Key);
- QByteArray sign2 = QCryptographicHash::hash(sign1.toUtf8(), QCryptographicHash::Md5);
- QString sign = sign2.toHex();
- QString status = QString("q=%1&from=%2&to=%3&appid=%4&salt=%5&sign=%6")
- .arg(q).arg(from).arg(to).arg(appid).arg(salt).arg(sign);
- post_data.append(status);
- network_request.setUrl(QUrl("http://api.fanyi.baidu.com/api/trans/vip/translate?"));
- network_request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
- network_request.setHeader(QNetworkRequest::ContentLengthHeader, post_data.length());
- network_manager->post(network_request,post_data);
- }
- void MainWindow::ReplyFinished(QNetworkReply *reply)
- {
- QVariant status_code = reply->attribute
- (QNetworkRequest::HttpStatusCodeAttribute);
- if(reply->error() == QNetworkReply::NoError)
- {
- QByteArray bytes = reply->readAll(); //获取字节
- QString result(bytes); //转化为字符串
- QJsonObject data(QJsonDocument::fromJson(bytes).object());
- QString string = data["trans_result"].toArray()[0].toObject()["dst"].toString();
- ui->label->setText(string);
- qDebug()<<string;
- }
- delete reply;
- }
- void Uploader::onPostDataFinish(QNetworkReply *reply)
- {
- QVariant statuscode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
- if(statuscode==200&&reply->error() == QNetworkReply::NoError)
- {
- QByteArray bytes = reply->readAll();
- QString feedback(bytes);
- .../*上传成功,执行相应操作*/
- }
- else
- {
- .../*上传失败,执行相应操作*/
- }
- delete reply; //这一句是关键,用来释放上传结束后文件的内存
- }