Qt - THelper (Translation Tool)

前言

本文实现了一个翻译小工具,目前使用 百度翻译API腾讯AI平台的机器翻译API;若有免费的API接口,未来也会考虑加上。

目前界面任然比较简陋,功能比较单一。有啥想法可以留言,有空的话一定加上!

源码已托管至 GitHub-THelper

v0.2 展示如下:

在这里插入图片描述

接入原理

  • 按照 API 说明文档要求对请求参数进行拼接
  • 通过网络发送 http/https 请求(get/post
  • 解析返回的Json 数据

Http/Https 在线测试

在未拼接API请求之前如何测试 https 请求及解析是否正常呢?

  • 淘宝查询电话号码归属地(可用)
    https://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=手机号

  • Json在线解析

百度翻译API

通用翻译API接入文档

原理

使用百度通用翻译API,其实只需要按照官方文档格式发送一个 http/https 请求。

  • 通用翻译API HTTP地址:
http://api.fanyi.baidu.com/api/trans/vip/translate
  • 通用翻译API HTTPS地址:
https://fanyi-api.baidu.com/api/trans/vip/translate

参数表单如下:

在这里插入图片描述
然后接收应答;应答数据为 Json 格式,我们需要解析它拿到我们需要的翻译文本。

{
   
    "from": "en",
    "to":"zh",
    "trans_result":[{
   
        "src":"apple",
        "dst":"\u82f9\u679c"
    }]
}

网络请求

Qt 中的 Http请求 可以用 QNetworkAccessManager 实现,本处使用的是 Get 请求:

    QNetworkAccessManager *mnetwork_Manager = new QNetworkAccessManager;
    QNetworkRequest *request= new QNetworkRequest;

    QMetaObject::Connection connRet = QObject::connect(mnetwork_Manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(requestFinished(QNetworkReply*)));
    Q_ASSERT(connRet);

    request->setUrl(QUrl(str_request));

    qDebug() << str_request;

    mnetwork_Manager->get(*request);

签名

MD5

QT中提供了 QCryptographicHash,可用于 MD5 加密:

    //MD5 - 签名
    QString str_noencrypt  = APPID.toUtf8() + strinput + QString::number(mrand).toUtf8() + Key.toUtf8();
    QString signature = QCryptographicHash::hash(str_noencrypt.toUtf8(),QCryptographicHash::Md5).toHex();

注意:按照文档提示, 在生成签名拼接 appid+q+salt+密钥 字符串时,q(即 strinput )不需要做 URL encode,在生成签名之后,发送 HTTP 请求之前才需要对要发送的待翻译文本字段 q(即strinput)做 URL encode

随机数

这里使用 QTime 生成伪随机数:


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值