手把手教React Native实战之44API学习-网络状态与数据交互
来源:互联网 发布:windows安装hadoop2.7 编辑:程序博客网 时间:2024/06/05 23:56
网络连接状态NetInfo:
获取网络状态是异步的,使用了js的Promise机制
Android平台的网络连接类型状态如下:
1.NONE 设备没有网络连接
2.BLUETOOTH 蓝牙数据连接
3.DUMMY 虚拟数据连接
4.ETHERNET 以太网数据连接
5.MOBILE 手机移动网络数据连接
6.MOBILE_DUN 拨号移动网络数据连接
7.MOBILE_HIPRI 高权限的移动网络数据连接
8.MOBILE_MMS 彩信移动网络数据连接
9.MOBILE_SUPL SUP网络数据连接
10.VPN 虚拟网络连接 ,最低支持Android API 21版本
11.WIFI 无线网络连接
12.WIMAX wimax网络连接
13.UNKNOWN 未知网络数据连接
根据文档说明:除此之外的其他一些网络连接状态已经被Android API隐藏了,但是我们可以在有需要的时候进行使用。
IOS平台的网络连接类型状态如下:
1.none 设备没有联网
2.wifi 设备联网并且是连接的wifi网络,或者当前是iOS模拟器
3.cell 设备联网是通过连接Edge,3G,WiMax或者LET网络
4.unknown 该检测发生异常错误或者网络状态无从知道
NetInfo有两个监听:
1.网络状态改变的监听 回调当前网络的状态
2.网络是否连接的监听 回调true或false
Android独有的特色:
1.NetInfo.isConnectionExpensive判断当前网络是否计费
2.AndroidManifest.xml文件中添加如下权限字段:(需视频演示)
数据交互(网络请求与响应)
抓包工具:httpwatch 下载地址:https://yunpan.cn/cRpfdwiYvu2jR 访问密码 f018
IE中打开httpwatch的方法: shift+F2 Record Stop clear
通过http或https协议与网络服务器交互,react native集成了node-fetch包以支持开发者的这种需求
网络协议:http https
网络请求方法:get post 等 默认是get
1.GET使用URL或Cookie传参。而POST将数据放在BODY中。
2.GET的URL会有长度上的限制,则POST的数据则可以非常大。
3.POST比GET安全,因为数据在地址栏上不可见。
百度一下:不再以讹传讹,GET和POST的真正区别
建议:
1.get方式的安全性较Post方式要差些,包含机密信息的话,建议用Post数据提交方式;
2.在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式;
准备需要传输的消息头:(标准消息头 自定义消息头)
React Native使用http协议框架支持Accept-Encoding: gzip, deflate格式编码,开发者不需要对此进行设置
自定义消息头可以在一些约定好的http消息头中填入身份认证信息
RN中的网络访问api:Fetch(推荐) XMLHttpRequest
fetch是一个更好的网络API,它由标准委员会提出,并已经在Chrome中实现。它在React Native中也默认可以使用。fetch的返回值是一个Promise对象,你可以用两种办法来使用它:1、使用then和catch指定回调函数 2、使用ES7的async/await语法来发起一个异步调用
//如果你的服务器无法识别上面POST的数据格式,那么可以尝试传统的form格式
map.body = ‘username=13667377378&password=dfy889&act=signin’;
map.follow = 10;//设置请求允许的最大重定向次数,0为不允许重定向map.timeout = 8000;//设置超时时间,0为没有超时时间,这个值在重定向时会被重置map.size = 0;//设置请求回应中的消息体最大允许长度,0为没有限制
XMLHttpRequest的实现几乎跟Web一样,唯一的区别就是(安全机制)rn中的XMLHttpRequest不存在跨域的限制,而是作为全局api实现的,你可以访问任何网站。但是,XMLHttpRequest基于iOS网络的
let request=new XMLHttpRequest();
request.onreadystatechange= (e)=>{
if(request.readyState!==4){
return ;
}
if(request.status===200){
alert(request.resonsesText);
}else{
alert(‘出错啦’);
}
};request.open('GET','http://www.reactnative.vip/');request.send();
复制代码
- 手把手教React Native实战之44API学习-网络状态与数据交互
- [原]东方耀手把手教React Native实战之API学习DatePickerAndroid与TimePickerAndroid
- 【原】东方耀手把手教React Native实战之45API学习CameraRoll_笔记[难]
- 手把手教你iOS如何调用React Native,即是iOS与RN的交互,将推送数据传递RN
- react native之API学习
- 对Native 与 React 交互的学习
- 手把手教React Native实战开发视频教程 干货
- React Native之组件请求网络数据
- 【React Native实战教程】GitHub Trending API数据的获取
- [React Native]获取网络状态
- react native 判断网络状态
- react-native 获取网络状态
- React Native 与 原生交互
- React Native 与 原生交互
- react native学习笔记20——常用API(2)AppState应用前后台、NetInfo网络状态
- 【REACT NATIVE 系列教程之十二】REACT NATIVE(JS/ES)与IOS(OBJECT-C)交互通信
- 【稀饭】react native 实战系列教程之数据存储
- React Native入门与实战
- 页面常用的JS和异步请求(一)
- Android Studio 自动升级 gradle 失败解决方案
- git pull error (no local branch)
- Zookeeper(6)-Zookeeper 存储与client
- 字符串出现的次数
- 手把手教React Native实战之44API学习-网络状态与数据交互
- 关于网络连接Network的使用
- Git - Your branch and 'origin/xxx' have diverged
- Storm中的一些概念
- poj1330 裸LCA
- 使用 JQuery 返回页面顶部
- Scala学习笔记(三) ---- 类与对象
- 用JAVA读取XML文件
- 一天一篇批处理之——part1:Batch批处理语句中echo on/off 与@ 的区别