QT简单实现含有Token的Get及Post请求

这段代码展示了如何使用Qt库中的QNetworkAccessManager类进行HTTP POST和GET请求。函数httpPost和httpGet分别处理POST和GET操作,设置请求头,处理响应并返回HTTP状态码。示例中还包含了一个获取信息的函数getInfo,它可以根据需要调用POST或GET方法。
摘要由CSDN通过智能技术生成

post请求

#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QObject>
#include <QEventLoop>
#include <QNetworkReply>

int httpPost(const QString& sUrl, QByteArray& outArr, const QString& strToken)
{
    QByteArray data;//根据需求选择是否需要处理该数据
    QNetworkRequest request(sUrl);
    request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json;charset=UTF-8");
    if (!strToken.isEmpty())
    {
        request.setRawHeader("token", strToken.toLatin1());
    }
    auto networkManager = std::make_shared<QNetworkAccessManager>();
    QNetworkReply *pReply = networkManager->post(request, data);

    QEventLoop eventLoop;
    QObject::connect(networkManager.get(), &QNetworkAccessManager::finished, &eventLoop, &QEventLoop::quit);
    eventLoop.exec();

    outArr = pReply->readAll();
    int nRet = pReply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
    delete pReply;
    
    return nRet;
}

Get请求

int httpGet(const QString& sUrl, QByteArray& outArr, const QString& strToken)
{
    QNetworkRequest request(sUrl);
    request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json;charset=UTF-8");

    if (!strToken.isEmpty())
    {
        request.setRawHeader("token", strToken.toLatin1());
    }

    auto pNetAccessMgr = std::make_shared<QNetworkAccessManager>();
    QNetworkReply *pReply = pNetAccessMgr->get(request);

    QEventLoop eventLoop;
    QObject::connect(pNetAccessMgr.get(), &QNetworkAccessManager::finished, &eventLoop, &QEventLoop::quit);
    eventLoop.exec();

    outArr = pReply->readAll();
    int nRet = pReply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
    delete pReply;
    return nRet;
}
QByteArray getInfo()
{
    QByteArray outArr;//通过请求网页端获取到的处理内容
    QString strURL = QString("http://%1/test?param2=%2&param3=%3")
        .arg("参数1"/*IP*/)
        .arg("参数2")
        .arg("参数3");//根据需求传入参数
	QString strToken = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI1OTgwNTMzNzc5MTg1OTA2Mzg5IiwiaWF0IjoxNjQ1NTE4NjkyLCJ0b2tlbiI6IjRjZTcyYjhiMDJiNDQ0ZTFiYTgwNzY0NDU5MGI0OGM3In0.IRGt1uxs9rJiK9qXkQQDCv6nA1rvwxtjosUUyBGh4ZM";//示例token值
	
    httpPost(strURL, outArr, strToken );
	//httpGet(strURL, outArr, strToken );
    return outArr;
}
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值