【QML xmlhttpreques】利用xmlhttprequest实现http网络请求
XMLHttpRequest(XHR)是现代Web开发中不可或缺的技术之一。它允许我们在不刷新整个页面的情况下,与服务器进行数据交换。readyState是XHR对象中的一个属性,它表示请求/响应过程的当前活动阶段。了解readyState对于高效使用XHR至关重要。
1、什么是XHR readyState?
readyState是XMLHttpRequest对象的一个只读属性,它代表了当前请求的状态。readyState的值是一个整数,它随着请求过程的不同阶段而变化。这些阶段如下:
0(UNSENT) :请求未初始化。尚未调用open()方法。
1(OPENED) :服务器连接已建立。已调用open()方法,但尚未调用send()方法。
2(HEADERS_RECEIVED):请求已接收。send()方法已被调用,且头部和状态已可获取。
3(LOADING) :请求处理中。响应体正在下载中,此时部分数据可能已可用。
4(DONE) :请求完成。整个请求过程已完成,且响应已就绪。
2、如何使用XHR readyState?
要使用readyState,首先需要创建一个XMLHttpRequest对象。然后,通过设置一个事件处理函数来监听readystatechange事件。每当readyState的值改变时,都会触发这个事件。
1 var xhr = new XMLHttpRequest();
2
3 xhr.onreadystatechange = function() {
4 if (xhr.readyState === 4 && xhr.status === 200) {
5 // 请求成功,处理响应数据
6 console.log(xhr.responseText);
7 }
8 };
9
10 xhr.open('GET', 'https://example.com/data', true);
11 xhr.send();
在这个例子中,我们首先创建了一个XHR对象。然后,我们为readystatechange事件设置了一个处理函数。在这个函数中,我们检查readyState是否为4(表示请求已完成)以及HTTP状态码是否为200(表示请求成功)。如果是,我们就处理响应数据。
readyState的值是只读的,不能被修改。readyState的变化是同步发生的,但readystatechange事件是异步触发的。- 在某些情况下,
readyState可能会直接跳过某些值,例如从0直接变为4。
3、HTTP状态码详解
- 200 - 请求成功
- 301 - 资源(网页等)被永久转移到其它URL
- 404 - 请求的资源(网页等)不存在
- 500 - 内部服务器错误
4、代码实例
1 // 功能是检查网络连接状态,通过向指定的 URL 发送一个 HTTP GET 请求,根据请求的响应状态判断网络是否正常。如果网络正常,可进行相应处理;
2 // 如果网络异常,则弹出提示对话框,告知用户连接互联网,并在用户点击确认后执行一些界面操作
3
4 function checkNetworkStatus() { //
5 var request = new XMLHttpRequest();
6 request.open("GET", "https://www.example.com", true);
7 request.onreadystatechange = function() {
8 if (request.readyState === XMLHttpRequest.DONE) {
9 if (request.status === 200) {
10 // mainWindow.showMessageDialog()
11 } else {
12 mainWindow.showMessageDialog(qsTr("断网提示"),qsTr("请连接互联网!"),StandardButton.Ok,function(){
13 // toolDrawer.visible = false
14 // multiCamsView.destroy()
15 toolDrawer.visible = false
16 toolDrawerLoader.sourceComponent = null
17 })
18 }
19 }
20 };
21 request.send();
22 }
【QML xmlhttpreques】利用xmlhttprequest实现http网络请求的更多相关文章
- 利用 WireShark 深入调试网络请求
来源:伯乐在线 - bestswifter 如有好文章投稿,请点击 → 这里了解详情 背景 最近发现我们产品在打开广告链接(Webview)时有一定概率会非常慢,白屏时间超过 10s,追查广告的过程中 ...
- block传值以及利用block封装一个网络请求类
1.block在俩个UIViewController间传值 近期刚学了几招block 的高级使用方法,事实上就是利用block语法在俩个UIViewController之间传值,在这里分享给刚開始学习 ...
- qt qml 利用xmlhttprequest 调用有赞api
最近朋友在有赞商城上面开了一个店铺,因为有实体店,一般卖商品后送货上门,但是打票时候老是人工用world文档人工复制黏贴订单打印小票, 所以就找我帮忙做一个软件专门打印小票的,就研究起来调用有赞第三方 ...
- 网络编程(一) 利用NSURLSession发送GET POST请求
Xcode 7.0后,http链接不能直接访问(https可以),需要在Info.plist增加下面一项才能正确访问. 使用NSURLSession进行网络请求的流程: 1.构造NSURL 2.构造N ...
- 利用Fiddler对Android模拟器网络请求进行抓包
安装使用Fiddler 下载安装Fiddler的方法这里就略过了,一路Next就行了.装好之后运行软件,正常情况这个时候我们已经可以对电脑的网络请求进行抓包了.Fiddler默认的代理地址是127.0 ...
- 十. Axios网络请求封装
1. 网络模块的选择 Vue中发送网络请求有非常多的方式,那么在开发中如何选择呢? 选择一:传统的Ajax是基于XMLHttpRequest(XHR) 为什么不用它呢?非常好解释配置和调用方式等非常混 ...
- android 网络请求Ⅰ
本章讲述在android开发中,常用的网络请求操作.网络请求利用android基本的HttpURLConnection连接URL和开源网络请求包AsyncHttpClient.本次网络请求以调取天气接 ...
- 在 JS 中使用 fetch 更加高效地进行网络请求
在前端快速发展地过程中,为了契合更好的设计模式,产生了 fetch 框架,此文将简要介绍下 fetch 的基本使用. 我的源博客地址:http://blog.parryqiu.com/2016/03/ ...
- Android网络请求通信之Volley
一.Volley简介 Volley网络框架是Google公司在2013年发布的一款Android平台上的网络请求通信库.以下是对Volley的简单归纳. Volley的优点: 使网络通信更快.更简单. ...
- iOS 多个异步网络请求全部返回后再执行具体逻辑的方法
对于dispatch多个异步操作后的同步方法,以前只看过dispatch_group_async,看看这个方法的说明: * @discussion * Submits a block to a dis ...
随机推荐
- Linux下如何使用perf/gdb/pstack分析性能与问题排查
本文分享自天翼云开发者社区<Linux下如何使用perf/gdb/pstack分析性能与问题排查>,作者:5****m 在Linux系统中,perf.gdb和pstack是三个常用的性能分 ...
- DeepSeek-V3
一.与DeepSeek-v2比较 1. 架构和参数(Architecture and Parameters) DeepSeek-V3采用 Mixture-of-Experts (MoE) 架构,共有6 ...
- Golang指针解析
一.简单说明 golang指针可以这样理解:本身为一个整型常量,但由于其声明时为指针,因此拥有了特殊的能力,即在其前增加 * ,即可直接访问内存编号为该整型常量的数据.而对于某个定义的常量,在前面加 ...
- Navicat mysql 15破解
参考链接:https://www.cnblogs.com/kkdaj/p/12794804.html 更正: products选择的是MySQL,而不是premium,不然无法生成激活码
- 保姆级教程!玩转 ChunJun 详细指南
ChunJun是一款稳定.易用.高效.批流一体的数据集成框架,⽀持海量数据的同步与计算.ChunJun 既可以采集静态的数据,比如 MySQL,HDFS 等,也可以采集实时变化的数据,比如 binlo ...
- 开源项目丨Taier1.2版本发布,新增工作流、租户绑定简化等多项功能
2022年7月26日,Taier1.2版本正式发布! 本次版本发布更新功能: 新增工作流 新增OceanBase SQL 新增Flink jar任务 数据同步.实时采集支持脏数据管理 Hive UDF ...
- 五、kernel修改屏幕配置
2.3.修改屏幕配置 2.3.1.配置 gpio 修改 ./rk_linux_sdk/kernel/arch/arm64/boot/dts/rockchip/rk3566-evb2-lp4x-v10. ...
- java 聊天 两个进程互相通信开两个线程
简介 RT code server package com.kuang; import java.io.BufferedReader; import java.io.IOException; impo ...
- 使用math库给我们定一个一些常用常量
简介 使用math库给我们定一个一些常用常量 参考链接 https://www.quantstart.com/articles/Mathematical-Constants-in-C/ code #d ...
- 企业API网关适用业务场景
什么是企业级API网关 企业级API网关是一种用于管理.保护和监控企业内部和外部API(Application Programming Interface)的解决方案.它提供了一套统一的接入点,帮助企 ...