Qt调用谷歌翻译API

Qt调用谷歌翻译API原理 模拟 Google 翻译网页请求 ps 频繁调用会封 IP 哦 QStringGoogl translateTex QStringtext QStringsourc QStringtarge QStringretSt QStringfinal m path client m client amp sl sourceLang amp tl targetLang amp dt t amp q

QString GoogleAPI::translateText(QString text, QString sourceLang, QString targetLang) { 
    QString retStr=""; QString finalPath = m_path +"?client="+m_client+"&sl="+sourceLang+"&tl="+targetLang+"&dt=t&q="+ text.toUtf8().toPercentEncoding(); postHttp(finalPath, retStr); return retStr; } int GoogleAPI::postHttp(QString finalPath, QString& p_translate) { 
    QNetworkRequest request; request.setUrl(QUrl::fromEncoded(finalPath.toUtf8())); request.setHeader(QNetworkRequest::UserAgentHeader, m_userAgent); request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json; charset=utf-8"); QTimer timer; timer.setInterval(10000); // 设置超时时间 10 秒 timer.setSingleShot(true); // 单次触发 QNetworkAccessManager networkManager; QNetworkReply *pReply = networkManager.get(request); QEventLoop loop; connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit); connect(pReply, &QNetworkReply::finished, &loop, &QEventLoop::quit); timer.start(); loop.exec(); if (timer.isActive()) { 
    // 处理响应 timer.stop(); if (pReply->error() != QNetworkReply::NoError) { 
    // 错误处理 qDebug()<<"GoogleAPI::postHttp() QNetworkReply Error String : " << pReply->errorString(); return -1; } else { 
    QByteArray data = pReply->readAll(); //如果有错误的序列号 int errorIndex = data.indexOf("error_code"); if (errorIndex != -1) return errorIndex; //直接截取 QByteArray data QString dstStr = QString(data); int startPos = dstStr.indexOf("[\""); int endPos = dstStr.indexOf("\",\""); p_translate = dstStr.mid(startPos + 3, endPos - startPos - 3); //用一个js类型变量获得返回值的内容 ----json解析太麻烦 // QJsonParseError jsonError; // QJsonDocument doucment = QJsonDocument::fromJson(data, &jsonError); // if(!doucment.isNull() && (jsonError.error == QJsonParseError::NoError)) // { 
    // if (doucment.isArray()) // { 
    // QJsonArray array = doucment.array(); // if(array.count() > 0) // { 
    // QJsonValue value = array.at(0); // if(value.isArray()) // { 
    // QJsonArray array1 = value.toArray(); // if(array1.count() > 0) // { 
    // QJsonValue value1 = array1.at(0); // if(value1.isArray()) // { 
    // QJsonArray array2 = value1.toArray(); // if(array2.count() > 0) // { 
    // QString s = array2.at(0).toString(); // qDebug()<< s; // } // } // } // } // } // } // } return 0; } } else { 
    // 处理超时 disconnect(pReply, &QNetworkReply::finished, &loop, &QEventLoop::quit); pReply->abort(); pReply->deleteLater(); qDebug()<<"QNetworkReply Timeout String : " << finalPath; return -1; } return 0; } 

参考博客 调用谷歌翻译API(FREE)的java代码

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/212620.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午7:39
下一篇 2026年3月18日 下午7:39


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号