L o a d i n g . . .
主打一个C++
文章详情

QT制作http以及https请求测试工具

Posted on 2023-01-08 03:08:50 by 主打一个C++

qt5.14.2

最近玩小东西,没一个用的顺手的测试工具,每次写代码也写烦了,实在懒得自己造,结果。。。。。。。上图:

image.png

//写完总得测试一下吧?直接暴力测试百度翻译的透明接口

image.png

//来看看请求地址

image.png

//最终拿到必要请求数据:

请求地址: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参数

image.png

//直接复制出来,参数很明显,不多阐述

{"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}

//开始测试请求翻译,直接复制进去

image.png

//点击 Request 直接请求得到结果,下面dst结果

image.png

还得是自己造的用得顺手👻  

总结:没什么技术含量的东西,都是强迫症惹的祸。。。。。

贴下请求类:

#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

作者近期文章
  • 随手笔记
  • 主打一个C++   2025-01-11 20:02:01
  • 都2000000025年了。还有不能随意访问guthub的,仔细看。在国内其实是可以正常访问的,gfw并没屏蔽。这里给出其中一个简单直接的方法稳定访问。1. 随便百度一个”dn
提示
×
确定
数据库执行: 8次 总耗时: 0.01s
页面加载耗时: 



wechat +447752296473
wechat cpp-blog