刚接触Qt网络部分,参考别人的代码,写了一个百度翻译应用。有点小激动,哈哈。
这是主要代码,appid和key换上就可以使用。
#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;
}