Qt发送http请求

news2024/11/26 8:49:40

需要在.pro项目文件中添加网络模块,不然无法使用http相关的类获取数据

QT += core gui network

用于http通信的类为QNetworkAccessManager

发送Get请求

通过调用QNetworkAccessManager::get方法

QNetworkReply *QNetworkAccessManager::get(const QNetworkRequest &request)

如何获得响应

每次发送http请求收到响应后QNetworkAccessManager都会发出1个finished信号:

[signal] void QNetworkAccessManager::finished(QNetworkReply *reply)

这个信号的参数就存储了http响应的信息

我们就可定义一个槽函数来绑定这个信号,在槽函数中解析信号传过来的参数中携带的信息

举例

向天气网发送请求,获取北京的最近几天的天气数据,然后将请求到的数据打印到控制台

#include<QNetworkAccessManager>
#include<QNetworkReply>
#include<QNetworkRequest>
#include<QUrl>

    //创建http请求管理类
    QNetworkAccessManager* mgr=new QNetworkAccessManager(this);

    //绑定槽函数
    connect(mgr,&QNetworkAccessManager::finished,this,[=](QNetworkReply* reply){
        //在这个槽函数中解析响应
        //1.可以获取到这次请求的方法,是get还是post或其他
        qDebug()<<"operation:"<<reply->operation();

        //2.可以获取到这次响应的状态码,200=OK
        qDebug()<<"status code:"<<
        reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();

        //3.可以获取到这次请求时的url
        qDebug()<<"url:"<<reply->url();

        //4.可以或取到响应头
        qDebug()<<"raw header:"<<reply->rawHeaderList();

        //5.可以获取这次响应的错误码,请求成功则返回QNetworkReply::NoError
        qDebug()<<reply->error();

        if(reply->error()!=QNetworkReply::NoError
            || reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt()!=200)
        {
            //请求失败直接返回
            return;
        }

        //6.获取响应的json报文
        //readAll方法
        auto reply_info=reply->readAll();
        qDebug()<<"json info:\n"<<reply_info.data();

        //每次响应解析完成后记得释放内存
        reply->deleteLater();

    });


    //发送请求
    //请求需要url
    QUrl url("http://t.weather.itboy.net/api/weather/city/101010100");
    mgr->get(QNetworkRequest(url));

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2124728.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

跨部门SOP与统一知识库:打破信息孤岛,促进团队协作

引言&#xff1a; 在当今这个快速变化且高度竞争的商业环境中&#xff0c;企业面临着前所未有的挑战&#xff0c;其中之一便是如何高效地跨越部门界限&#xff0c;实现无缝协作。传统的组织结构往往导致信息孤岛的出现&#xff0c;不同部门间流程不一致、信息不共享&#xff0…

系统架构师考试学习笔记第五篇——架构设计补充知识(23)知识产权

本章考点&#xff1a; 第23课时主要学习国家与行业标准、知识产权的内容。根据考试大纲,本课时知识点会涉及单项选择题,按以往全国计算机技术与软件专业技术资格(水平)考试的出题规律约占3分。本课时内容属于补充知识范畴,考题类型固定。本课时知识架构如图23.1所示。 一、知识…

Python(PyTorch)和MATLAB及Rust和C++结构相似度指数测量导图

&#x1f3af;要点 量化检查图像压缩质量低分辨率多光谱和高分辨率图像实现超分辨率分析图像质量图像索引/多尺度结构相似度指数和光谱角映射器及视觉信息保真度多种指标峰值信噪比和结构相似度指数测量结构相似性图像分类PNG和JPEG图像相似性近似算法图像压缩&#xff0c;视频…

Linux服务器中在指定python环境中新建notebook

在指定环境下建立新的IPython内核pip install ipykernel生成ipykernel的配置文件&#xff1a;python -m ipykernel install --user --name netCLR 其中--user是指在用户级别生成&#xff0c;如果没有--user就会在系统中安装&#xff0c;如果不是管理员的话就会没有权限生成&…

【STM32】TIM输入捕获测量电平持续时间

本篇博客重点在于标准库函数的理解与使用&#xff0c;搭建一个框架便于快速开发 目录 前言 测量电平时间思路 配置中断 中断服务函数 捕获完成判断 代码示例 IC.h IC.c main.c 代码参考 前言 阅读本篇博客需了解定时器时基单元&#xff0c;更新中断和输入捕获 定时…

UWB定位系统在智能制造中的应用实践

UWB(Ultra-Wideband&#xff0c;超宽带)定位系统在智能制造中的应用实践已经取得了显著成效。以下是对其应用实践的详细阐述&#xff1a; 一、高精度定位与实时监控 高精度定位&#xff1a;UWB技术以其厘米级甚至毫米级的定位精度&#xff0c;远超传统的GPS和Wi-Fi等定位技术&a…

Endnote 插入参考文献 毕业论文

Endnote使用 1. 使用毕业论文参考文献格式1.1 GBT7714下载1.2 style导入1.3 选择GBT7714 2. 修改参考文献与编号之间的间隔2.1 点击三角2.2 修改Hanging 3. 将引用编号修改为右上角小字3.1 进入Endnote软件&#xff0c;点击Edit-->Output style-->Edit"Chinese Std …

【小鹏汽车用户平台-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…

计算机网络408考研 2022

https://zhuanlan.zhihu.com/p/695446866 1 1 1SDN代表软件定义网络。它是一种网络架构&#xff0c;旨在通过将网络控制平面从数据转发平面分离出来&#xff0c;从而实现网络的灵活性和可编程性。在SDN中&#xff0c;网络管理员可以通过集中式控制器 来动态管理网络流量&…

了解Redis集群概念,集群如何选举主节点

请给胡广一个免费的三连吗&#xff1f;感谢&#xff01; 1. Redis集群 1.1 集群概念 Redis主从架构和Redis集群架构是两种不同的概念&#xff0c;大家刚接触Redis时经常弄混淆。胡广给大家贴下Redis官网对两者的解释。 &#xff08;1&#xff09;Redis主从架构 Redis主从实…

SpringBatch

Spring Batch Job instance(作业实例) 当作业运行时&#xff0c;会创建一个Job Instance(作业实例)&#xff0c;它代表作业的一次逻辑运行&#xff0c;可通过作业名称与作业标识参数进行区分。 比如一个业务需求&#xff1a; 每天定期数据同步&#xff0c;作业名称-daily-sync-…

基于SpringBoot+Vue的考务管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的考务管理…

vue 使用jszip,file-saver下载压缩包,自定义文件夹名,文件名打包下载为zip压缩包文件,全局封装公共方法使用。

记录一下后台管理全局封装一个压缩包下载方法&#xff0c;文件夹名自定义&#xff0c;文件名自定义&#xff0c;压缩包名自定义。 安装必要的库 npm install jszip npm install file-saver自定义一个公共方法全局注入 页面使用 /** 下载按钮操作 */handleDownload() {const i…

JAVA智能管理高效运营自营商城系统

智能管理&#xff0c;高效运营 —— 自营商城系统的魅力揭秘&#x1f680; &#x1f4c8; 开篇&#xff1a;告别繁琐&#xff0c;拥抱智能管理 你还在为商城运营的繁琐流程头疼吗&#xff1f;&#x1f92f; 还在为数据分析的复杂性而烦恼吗&#xff1f;&#x1f914; 那就让我…

Python设计模式实战:开启软件设计的精进之旅

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

企业工商信息查询-企业工商信息查询接口-企业工商信息api

1、接口介绍 通过企业名称/社会统一信用代码/工商注册号三者其中之一快速查询全国企业工商数据&#xff0c;可查得企业工商基本信息。如&#xff1a;企业工商基本信息&#xff0c;企业法人&#xff0c;经营状态&#xff0c;注册资本&#xff0c;以及股东&#xff0c;高管&#…

[Linux入门]---进程等待

文章目录 1.进程等待必要性1.1什么是进程等待?**1.2为什么需要进程等待&#xff1f; 2.进程等待的方法2.1wait方法2.2waitpid方法2.2.1获取子进程status2.2.2options选项&#xff0c;父进程等待的三种方式 1.进程等待必要性 1.1什么是进程等待?** 通过系统调用wait/waitpid&…

结合长短期记忆网络(LSTM)和无迹卡尔曼滤波器(UKF)的技术在机器人导航和状态估计中的应用前景

结合长短期记忆网络(LSTM)和无迹卡尔曼滤波器(UKF)的技术在机器人导航和状态估计中具有广泛的应用前景。以下是关于这一主题的简要综述: 文章目录 结合LSTM和UKF的背景结合LSTM和UKF的优势应用实例研究现状MATLAB代码示例结合LSTM和UKF的背景 长短期记忆网络(LSTM)是一…

hadoop分布式搭建

hadoop的分布式搭建步骤&#xff1a; 第一步&#xff1a; 比如准备三台虚拟机&#xff0c;分别命名为master、node1、node2,并且确保都配置了java环境 &#xff0c;都关闭了防火墙&#xff0c;都设置了静态的IP地址&#xff0c;然后三台虚拟机的hosts文件都互相映射&#xff0…

atcoder abc370(dp,基环树/森林,倍增)

A 代码&#xff1a; #include <bits/stdc.h>using namespace std;int main() {int a, b;cin >> a >> b;if(a 1 && b 0) cout << "Yes" << endl;else if(a 0 && b 1) cout << "No" << en…