QT5.5 (post请求、MD5加密)

来源:互联网 发布:博罗县网络问政中心 编辑:程序博客网 时间:2024/06/11 14:25
  1. #include "mainwindow.h"  
  2. #include "ui_mainwindow.h"  
  3. #include <QNetwork.h>  
  4. #include <QtDebug>  
  5. #include <QString>  
  6. #include <QJsonObject>  
  7. #include <QJsonDocument>  
  8. #include <QJsonArray>  
  9. #include <QLabel>  
  10. #include <QCryptographicHash>  
  11.   
  12. MainWindow::MainWindow(QWidget *parent) :  
  13.     QMainWindow(parent),  
  14.     ui(new Ui::MainWindow)  
  15. {  
  16.     ui->setupUi(this);  
  17.     connect(network_manager,&QNetworkAccessManager::finished,this,&ReplyFinished);  
  18. }  
  19.   
  20. MainWindow::~MainWindow()  
  21. {  
  22.     delete ui;  
  23. }  
  24.   
  25. void MainWindow::on_pushButton_clicked()  
  26. {  
  27.     QString string = ui->lineEdit->text();  
  28.     QString q = string;  
  29.     QString from = "auto";  
  30.     QString to = "zh";  
  31.     QString appid = "xxxxxxxxxxxxxx";  
  32.     QString salt = "34542455";  
  33.     QString Key = "xxxxxxxxxxxxxxx";  
  34.     QString sign1 =appid+q+salt+Key;  
  35. //    QString str   = QString("%1%2%3%4")  
  36. //                    .arg(appid).arg(q).arg(salt).arg(Key);  
  37.     QByteArray sign2 = QCryptographicHash::hash(sign1.toUtf8(), QCryptographicHash::Md5);  
  38.     QString sign  = sign2.toHex();  
  39.     QString status = QString("q=%1&from=%2&to=%3&appid=%4&salt=%5&sign=%6")  
  40.                     .arg(q).arg(from).arg(to).arg(appid).arg(salt).arg(sign);  
  41.     post_data.append(status);  
  42.     network_request.setUrl(QUrl("http://api.fanyi.baidu.com/api/trans/vip/translate?"));  
  43.     network_request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");  
  44.     network_request.setHeader(QNetworkRequest::ContentLengthHeader, post_data.length());  
  45.     network_manager->post(network_request,post_data);  
  46. }  
  47.   
  48. void MainWindow::ReplyFinished(QNetworkReply *reply)  
  49. {  
  50.     QVariant status_code = reply->attribute  
  51.             (QNetworkRequest::HttpStatusCodeAttribute);  
  52.     if(reply->error() == QNetworkReply::NoError)  
  53.     {  
  54.         QByteArray bytes = reply->readAll();  //获取字节  
  55.         QString result(bytes);  //转化为字符串  
  56.         QJsonObject data(QJsonDocument::fromJson(bytes).object());  
  57.         QString string = data["trans_result"].toArray()[0].toObject()["dst"].toString();  
  58.         ui->label->setText(string);  
  59.         qDebug()<<string;  
  60.     }  
  61.     delete reply;  


  1. void Uploader::onPostDataFinish(QNetworkReply *reply)  
  2. {  
  3.     QVariant statuscode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);  
  4.     if(statuscode==200&&reply->error() == QNetworkReply::NoError)  
  5.     {  
  6.         QByteArray bytes = reply->readAll();  
  7.         QString feedback(bytes);  
  8.         .../*上传成功,执行相应操作*/  
  9.     }  
  10.     else  
  11.     {  
  12.         .../*上传失败,执行相应操作*/  
  13.     }  
  14.     delete reply;  //这一句是关键,用来释放上传结束后文件的内存