Qt调用百度翻译api

参考Gitee某工程

一.代码

//百度翻译
void CBaiduTranslater::translate(const QString &src, const QString from, const QString to)
{
    if (m_networkAccessManager == nullptr) return;

    QString MY_APID = "20220210001079094";        //开发账号如:2015063000000001
    QString MY_APID_KEY = "VfmtTr4zH7mbyd_tpKB9"; //开发密匙如:12345678
    QString baseUrl = "http://api.fanyi.baidu.com/api/trans/vip/translate?";

    //生成md5加密文件
    char salt[60];
    sprintf(salt,"%d",rand());  //获取随机数 41/18467
    QString sign=QString("%1%2%3%4").arg(MY_APID).arg(src).arg(salt).arg(MY_APID_KEY);//20220210001079094apple41VfmtTr4zH7mbyd_tpKB9
    QByteArray str = QCryptographicHash::hash(sign.toUtf8(),QCryptographicHash::Md5);
    QString MD5=str.toHex();//2462992b87d8f8ca6fc7bb0b87cbdfbf

    //方式一 字符串拼接
    //http://api.fanyi.baidu.com/api/trans/vip/translate?
    //q=apple&from=auto&to=auto&appid=20220210001079094&salt=41&sign=4da73b6a4351eda6e21ef14643f4e228
    QString sUrl = baseUrl + QString("q=%1&from=%2&to=%3&appid=%4""&salt=%5&sign=%6")
           .arg(src).arg(from).arg(to).arg(MY_APID).arg(salt).arg(MD5);//
    QUrl url(sUrl);

    //方式二 QUrlQuery
//    QUrl url(baseUrl);
//    QUrlQuery query;
//    query.addQueryItem("q", src);
//    query.addQueryItem("from", from);
//    query.addQueryItem("to", to);
//    query.addQueryItem("appid", MY_APID);//client_id无效 appid有效
//    query.addQueryItem("salt", salt);
//    query.addQueryItem("sign", MD5);
//    url.setQuery(query);

    QNetworkRequest request(url);//create http request header
    QNetworkReply *reply = m_networkAccessManager->get(request);//send GET request to get result

    /* return data */
    connect(reply, &QNetworkReply::readyRead, [=]{
        QByteArray data = reply->readAll();
        CBaiduTranslateResult result = decodeJsonData(data);//类似结构体,存储返回值
        emit finished(result);
        reply->close();
    });

    /* finish request */
    connect(reply, &QNetworkReply::finished, [=]{
        reply->deleteLater();
    });

    /* error */
    auto pError = static_cast<void (QNetworkReply::*)(QNetworkReply::NetworkError)>(&QNetworkReply::error);
    connect(reply, pError, [=](QNetworkReply::NetworkError){
        reply->deleteLater();
    });
}

二.代码下载

Qt调用百度翻译api(QtCreator工程)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值