React Native Networking API

p.p1 { margin: 0.0px 0.0px 2.0px 0.0px; font: 14.0px "Helvetica Neue"; color: #454545 }
p.p2 { margin: 0.0px 0.0px 2.0px 0.0px; font: 14.0px ".PingFang SC"; color: #454545 }
p.p3 { margin: 0.0px 0.0px 2.0px 0.0px; font: 14.0px "Helvetica Neue"; color: #454545; min-height: 17.0px }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545 }
p.p5 { margin: 0.0px 0.0px 2.0px 0.0px; font: 14.0px "Helvetica Neue"; color: #e4af0a }
p.p6 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545; min-height: 14.0px }
span.s1 { font: 14.0px ".PingFang SC" }
span.s2 { font: 14.0px "Helvetica Neue" }
span.s3 { color: #e4af0a }
span.s4 { font: 14.0px "Helvetica Neue"; color: #e4af0a }
span.s5 { font: 12.0px ".PingFang SC" }
span.s6 { font: 14.0px ".PingFang SC"; color: #454545 }
span.s7 { color: #454545 }

Networking (网络) 

大部分移动应用程序都需要从一个远程网址上加载数据资源,那么我们需要向一个接口发送一个请求,或者只需要从另外一个服务器获取一个静态内容.

1.Using Fetch (使用Fetch) 

React Native为我们提供了网络请求所需要的Fetch API .

Making requests (发起请求) 

想从任意网址获取内容?只需要通过网址获取即可:

fetch(‘https://mywebsite.com/mydata.json‘)

Fetch 的可选参数,允许你定制HTTP请求,可以额外指定 headers 或者使用 POST/GET 的方式进行请求:

fetch(‘https://mywebsite.com/endpoint/‘,{
  method:‘POST‘,
  headers:{
      ‘Accept‘:‘application/json‘,
      ‘Content-Type‘:‘application/json‘,
  },
  body:JSON.stringify({
      firstParam:‘yourValue‘,
      secondParam:‘yourOtherValue‘,
  })
})

2.Handling the response (处理响应) 

在上面的例子中我们已经学习了如何发起一个请求,那么请求发起以后,我们通常可以获得到请求的响应情况.

这里的网络请求是一个异步操作,它将会返回一个响应Promise(承诺/状态),下面是异步请求的代码示例:

function getMoviesFromApiAsync() {
  return fetch(‘https://facebook.github.io/react-native/movies.json‘)
      .then((response)=>response.json())
      .then((responseJson)=>{
        return responseJson.movies;
      })
      .catch((error)=>{
        console.error(error);
      });
}

你可以使用 ES2017 async/ await 的语法来书写:

async function getMoviesFromApi() {
      try {
        let response = await fetch(‘https://facebook.github.io/react-native/movies.json‘);
        let responseJson = await response.json();
        return responseJson.movies;
      } catch(error) {
        console.error(error);
      }
}

不要忘记捕获一下错误,如果没有捕获,系统将为自动丢弃.

默认情况下, iOS 将阻止任何不使用SSL加密的请求,如果你需要使用不加密的 URL ,那么需要添加一个传输安全的例外.
如果你知道 URL 访问的域,那么添加例外会更安全. 你可以禁止ATS。

3.Using Other Networking Libraries (使用其他的网络库) 

React Native内置了XMLHttpRequest API. 这样你可以使用第三方的库来操作,比如frisbee或者axios,或者你可以直接使用 XMLHttpRequest API 进行请求.

var request = new XMLHttpRequest();
request.onreadystatechange = (e) => {
      if (request.readyState!== 4) {
        return;
      }

      if (request.status === 200) {
        console.log(‘success‘,request .responseText);
      } else {
        console.warn(‘error‘);
      }
};
request.open(‘GET‘, ‘https://mywebsite.com/endpoint/‘);
request.send();

XMLHttpRequest 的安全模型和 Web 上不同,因为原生APP没有CORS这个概念.

4.WebSocket Support (WebSocket支持) 

React Native支持WebSockets,在一个单TCP连接提供双向通信通道的协议.

var ws = new WebSocket(‘ws://host.com/path‘);
ws.onopen = () => {
    // connection opened 连接打开
    ws.send(‘something‘);// send a message 发送信息
};
ws.onmessage = (e ) => {
    // a message was received 收到一个信息
    console.log(e.data);
};
ws.onerror = (e) => {
    // an error occurred 发生了错误
    console.log(e.message);
};
ws.onclose = (e) => {
    // connection closed 连接关闭
    console.log(e.code, e.reason);
};
时间: 2024-10-13 10:37:31

React Native Networking API的相关文章

一个资深iOS开发者对于React Native的看法

一个资深iOS开发者对于React Native的看法 当我第一次尝试ReactNative的时候,我觉得这只是网页开发者涉足原生移动应用领域的歪门邪道. 我认为一个js开发者可以使用javascript来构建iPhone应用确实是一件很酷的事情,但是我很快放弃了自己去使用它的念头.毕竟我因为爱好而从事ios原生开发多年,并且目前为止已经很熟悉这一套开发专业工具. 我已经创造了一些我引以为傲的iOS应用——一些使用Object-C和Xcode构建的应用,通常人们都是这么做的.这两样工具是苹果公司

[]H5、React Native、Native应用对比分析

目录(?)[-] 一React Native的出现 二3款应用效果 三工程方案 四对比分析 开发方式 性能 体验 更新 维护 开发方式 性能 体验 更新 维护 五综合 开发方式 性能 体验 更新 维护 @王利华,vczero “存 在即合理”.凡是存在的,都是合乎规律的.任何新事物的产生总要的它的道理:任何新事物的发展总是有着取代旧事物的能力.React Native来的正是时候,一则是因为H5发展到一定程度的受限:二则是移动市场的迅速崛起强调团队快速响应和迭代:三则是用户的体验被放大,用户要求

我的 React Native 技能树点亮计划 の React Native 开发 IDE 选型和配置

@author ASCE1885的 Github 简书 微博 CSDN 知乎 本文首发于 InfoQ 移动技术公众号:移动开发前线 由于潜在的商业目的,未经许可不开放全文转载许可,谢谢! React Native 发布一年多了,有不少公司已经在线上产品中或小范围试水,或大范围应用,很多公司或开发者都在为 React Native 的生态系统作出自己的贡献.React Native 的开发基本上是 Javascript + 系统原生开发语言(Java,Objective-C,Swift),原生语言

转 : React Native 开发之 IDE 选型和配置

转:https://mp.weixin.qq.com/s?__biz=MzA3ODg4MDk0Ng==&mid=2651112392&idx=1&sn=135e29ddde3050d469be98db815c267e&scene=0&key=18e81ac7415f67c4bcc2eaac3ca13f8d294ec1b8fa5828d4d7f13f2e81cc62f72e55e828ee04e2002284521336a3766d&ascene=0&

React Native教程 - 调用Web API

react-native官网Fetch介绍:https://facebook.github.io/react-native/docs/network.html#content react-native中不支持$,也就是说我们无法使用$HTTP来调用API,根据react-native官网教程,我们可以使用fetch,这也是一个更好的网络API,它在react native中默认可以使用. 在react-native项目中,我们还是使用我们的惯用方法,写一个服务js来放我们的所有API,但是在re

【React Native】Execution failed for task ':app:installDebug'. > com.android.builder.testing.api.DeviceException: No online devices found.

error Failed to install the app. Make sure you have the Android development environment set up: https://facebook.github.io/react-native/docs/getting-started.html#android-development-environment. Run CLI with --verbose flag for more details. Error: Co

React Native 网络层分析

文:志俊(沪江Web前端) 本文原创,转载请注明作者及出处 在使用React Native开发中,我们熟练的采用JavaScript的方式发送请求的方式发送一个请求到服务端,但是处理这个请求的过程其实和处理Web应用中发送的请求的过程是不一样的.因为处理这个请求的目标不是浏览器,而是嵌入这个应用的原生操作系统. 在处理React Native的请求时,分为两部分:一部分是JavaScript的运行环境,另一部分是嵌入JavaScript的Native(即原生Android和IOS)运行环境.Re

谈谈APP架构选型:React Native还是HBuilder

原文链接 导读:最近公司的一款新产品APP要进行研发,老大的意思想用H5来做混合APP以达到高效敏捷开发的目的.我自然就开始进行各种技术选型的调研,这里重点想说的是我最后挑选出的2款hybrid app开发技术方案:RN(react native),HBuilder.React Native是大名鼎鼎的Facebook的开源技术框架,而HBuilder是国内的H5工具开发公 司DCLOUD的产品.我自己先总结下吧:这两个技术框架在开发效率上基本上可以媲美WEB开发的速度,RN强调的是“Learn

菜鸟窝React Native 视频系列教程

菜鸟窝React Native 视频系列教程 交流QQ群:576089067 Hi,我是RichardCao,现任新美大酒店旅游事业群的Android Developer.15年加入饿了么即时配送BU,后负责蜂鸟众包Android端,期间引入react-native技术,作为国内react-native 与 Android混合开发的早期商业项目,具有一定经验,同时也是react-native开源项目reading(https://github.com/attentiveness/reading)