QT5.5 百度翻译(post请求、MD5加密)

刚接触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;
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值