文章详情
QT制作http以及https请求测试工具
Posted on 2023-01-08 03:08:50 by 主打一个C++
qt5.14.2
最近玩小东西,没一个用的顺手的测试工具,每次写代码也写烦了,实在懒得自己造,结果。。。。。。。上图:
//写完总得测试一下吧?直接暴力测试百度翻译的透明接口
//来看看请求地址
//最终拿到必要请求数据:
请求地址:https://fanyi.baidu.com/ait/text/translate
方式: POST
//顺便拿点其他headers参数
Accept: */*
Content-Type: application/json
Connection: close
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Origin: https://fanyi.baidu.com
//还有post参数
//直接复制出来,参数很明显,不多阐述
{"query":"你好.","from":"zh","to":"en","reference":"","corpusIds":[],"qcSettings":["1","2","3","4","5","6","7","8","9","10","11"],"needPhonetic":true,"domain":"common","milliTimestamp":1725756048024}
//开始测试请求翻译,直接复制进去
//点击 Request 直接请求得到结果,下面dst结果
还得是自己造的用得顺手👻
总结:没什么技术含量的东西,都是强迫症惹的祸。。。。。
贴下请求类:
#ifndef QREQUEST_H
#define QREQUEST_H
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QUrl>
#include <QByteArray>
#include <QSslConfiguration>
#include <QEventLoop>
#include <QDebug>
#include <QDateTime>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
#include <QRandomGenerator>
#include <QRegularExpression>
class qrequest{
public:
static bool Request(QString& _out, const QString& _url,const QString& _headers = "", const QString& _type = "GET", const QString& _data = "{}"){
// 创建一个QNetworkAccessManager实例
QNetworkAccessManager manager;
// 设置请求的URL
QUrl url(_url);
// 创建一个QNetworkRequest实例
QNetworkRequest request(url);
//是否https
if(url.scheme() == "https"){
QSslConfiguration sslConfig = request.sslConfiguration();
sslConfig.setPeerVerifyMode(QSslSocket::VerifyNone); //设置验证模式
request.setSslConfiguration(sslConfig);
}
// 解析并设置请求头
QStringList headerList = _headers.split(QRegExp("[
]"), Qt::SkipEmptyParts);
foreach (const QString &header, headerList) {
int colonIndex = header.indexOf(':');
if (colonIndex != -1) {
QString headerName = header.left(colonIndex).trimmed();
QString headerValue = header.mid(colonIndex + 1).trimmed();
request.setRawHeader(headerName.toUtf8(), headerValue.toUtf8());
}
}
// 设置请求头
//request.setHeader(QNetworkRequest::ContentTypeHeader, str);
// 发送请求
QNetworkReply *reply = nullptr;
QString type = _type.toLower();
if(type == "post"){
//发起请求
reply = manager.post(request, _data.toUtf8());
}else if(type == "get"){
reply = manager.get(request);
}else{
_out = "Request type error, post or get";
}
// 使用QEventLoop等待请求完成
QEventLoop loop;
QObject::connect(reply, &QNetworkReply::finished, &loop, &QEventLoop::quit);
loop.exec();
// 处理响应
if (reply->error() == QNetworkReply::NoError) {
_out = reply->readAll();
} else {
_out = "Request failed!";
return false;
}
// 释放
reply->deleteLater();
return true;
}
};
#endif // QREQUEST_H
成品到小玩具下载
*转载请注明出处:原文链接:https://cpp.vin/page/29.html