首页 > 其他分享 >Qt实现Http请求

Qt实现Http请求

时间:2024-11-07 22:57:54浏览次数:5  
标签:netAccessManager Http QNetworkAccessManager url reply 请求 MainWindow Qt

Qt中使用QNetworkAccessManager类来实现Http相关请求,本文介绍Http Get请求的简单实用方法。

下面是Qt中进行Http请求的简单步骤:

  • 定义QNetworkAccessManager指针及槽函数
  • 创建QNetworkAccessManager对象并关联槽函数
  • 在类的析构函数中删除QNetworkAccessManager对象
  • 实现槽函数
  • 调用Http请求

1、在头文件中定义QNetworkAccessManager指针及槽函数

private slots:
    void onNetworkReplyFinished(QNetworkReply *reply);

private:
QNetworkAccessManager *m_netAccessManager;

2、在构造函数中创建QNetworkAccessManager对象并关联信号槽

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    m_netAccessManager = new QNetworkAccessManager(this);

    //关联信号槽
    connect(m_netAccessManager, &QNetworkAccessManager::finished, this, &MainWindow::onNetworkReplyFinished);
}

3、在析构函数中删除QNetworkAccessManager对象

MainWindow::~MainWindow()
{
    delete ui;
    delete m_netAccessManager;
}

4、实现槽函数

void MainWindow::onNetworkReplyFinished(QNetworkReply *reply)
{
    //状态码:200表示请求成功
    int statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();

    qDebug() << "operation: " << reply->operation(); //请求方式
    qDebug() << "status code: " << statusCode; //状态码
    qDebug() << "url: " << reply->url(); //url
    qDebug() << "raw header: " << reply->rawHeaderList(); //header

    if (statusCode != 200 || reply->error() != QNetworkReply::NoError)
    {
        qDebug() << "请求数据失败:" << reply->errorString().toLocal8Bit().data(); //error
        return;
    }

    //获取响应信息
    QByteArray replyData = reply->readAll();
    auto byteArray = QString(replyData).toLocal8Bit();

    qDebug() << "read all: " << byteArray.data();

    //释放内存
    reply->deleteLater();
}

5、调用Get方法

QUrl url("the url");
m_netAccessManager->get(QNetworkRequest(url));

标签:netAccessManager,Http,QNetworkAccessManager,url,reply,请求,MainWindow,Qt
From: https://www.cnblogs.com/xhubobo/p/18534186

相关文章

  • QT:简易文本编辑器
      效果 main.cpp 代码:#include"imgprocessor.h"#include<QApplication>intmain(intargc,char*argv[]){QApplicationa(argc,argv);QFontf("ZYSong18030",12);//设置显示字段格式a.setFont(f);ImgProcessorw;w.s......
  • HTTP中的状态码
    HTTP中的状态码HTTP中的状态码状态码的作用状态码的职责是当客户端向服务器发送请求时,描述返回的请求结果,借助状态码,用户可以知道服务器端是正常处理了请求,还是出现了错误。类别原因1XX信息性状态码接收到的请求正在处理中2XX成功状态码请求正常处理完毕3......
  • cn.hutool.http.HttpResponse 实现http请求
    前提引入hutool依赖具体实现//发送GET请求publicstaticHttpResponsesendGetRequest(Stringurl,Map<String,List<String>>httpHeaders){HttpResponseresponse=HttpRequest.get(url).header(httpHeaders).ex......
  • Vue3 - 详细实现虚拟列表前端虚拟滚动列表解决方案,vue3长列表优化之虚拟列表,解决列表
    前言Vue2版本,请访问这篇文章在vue3项目开发中,详解实现虚拟列表高度不固定(不定高)且复杂含有图片视频等复杂虚拟列表教程,决列表每项高度不确定及img图像或视频的加载方案,利用缓冲区技术解决用户浏览时渲染不及时列表闪烁白屏/列表加载闪屏,解vue3实现虚拟列表优化大......
  • Windows Server 中的 NLB(Network Load Balancing,网络负载均衡)功能是一个用于将客户端
    WindowsServer中的NLB(NetworkLoadBalancing,网络负载均衡)功能是一个用于将客户端请求分配到多个服务器的技术,目的是提供高可用性和扩展性。NLB通过在多个服务器之间分配网络流量,确保应用程序或服务的高可用性,避免单点故障,并提高系统的处理能力。NLB通常用于需要高可用性和......
  • post 请求工具类
     importcom.alibaba.fastjson.JSONObject;importlombok.extern.slf4j.Slf4j;importjavax.net.ssl.HostnameVerifier;importjavax.net.ssl.HttpsURLConnection;importjava.io.*;importjava.net.*;importjava.nio.charset.StandardCharsets;@Slf4jpubliccla......
  • angular—如何制作一个HTTP拦截器
    原文链接:angular—如何制作一个HTTP拦截器–每天进步一点点HTTP拦截器在开发过程中十分常见。在构建项目时,最好就直接创建一个HTTP拦截器,否则遇到以下几种问题,再进行改动就会十分浪费时间。需要给所有的请求修改请求地址。需要给所有的请求参数设置新的请求报文首部。需要监......
  • 使用 vscode 简单配置 ESP32 连接 Wi-Fi 每日定时发送 HTTP 和 HTTPS 请求
    最新博客文章链接文字更新时间:2024/11/07由于学校校园网,如果长时间不重新登陆的话,网速会下降,所以想弄个能定时发送HTTP请求的东西。由于不想给路由器刷系统,也麻烦。就开始考虑使用局域网内的服务器,不过由于服务器没有Wi-Fi模块,也不想搞USB无线wifi网卡,就想着干脆用单......
  • 哪些网站可以申请免费的纯IP地址https证书
    申请免费纯IP地址HTTPS证书,您可以按照以下步骤进行:一、选择证书颁发机构(CA)目前,虽然一些大型云服务提供商(如阿里云、华为云、腾讯云等)已经取消了免费一年期SSL证书的供应,但仍有一些CA机构提供免费版本的IP地址HTTPS证书。二、在JoySSL申请免费证书访问JoySSL官网:https://www.jo......
  • 使用C++和QT开发应用程序入门以及开发实例分享
    目录1、搭建开发环境(VS2010和QT4.8.2)2、创建一个QT窗口3、在QT窗口中添加子窗口4、QT界面布局5、QT信号(SIGNAL)和槽(SLOT)6、最后C++软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续更新...)https://blog.csdn.net/chenlycly/article/details/125529931C/C++实......