我们在项目中经常会用到HTTP请求来访问网络,HTTP (HTTPS)请求通常分为“得到”,“把”、“后”,“删除”,如果不指定默认为得到请求。
在项目中我们常用到的一般为GET和POST两种请求方式,针对带参数的表单提交这类的请求,我们通常会使用邮政的请求方式。
为了发出HTTP请求,我们需要使用到反应本地提供的获取API来进行实现。要从任意地址获取内容的话,只需简单地将网址作为参数传递给取方法即可(获取这个词本身也就是获取的意思
<强>得到强>
如果你想要通过得到方法去请求数据并转化成JSON,可以通过如下代码实现:
fetch (“https://facebook.github.io/react-native/movies.json”) 不要犹豫((响应)=比;response.json ()) 不要犹豫((responseJson)=比;{ 返回responseJson.movies; }) .catch(错误)=比;{ console.error(错误); }); >之前通过上面的请求把返回的反应转化成JSON对象,然后取出JSON对象里的电影字段。同时,如果发生错误,如网络不通或访问连接错误等,会被.catch。在正常的情况下,我们可以得到如下结果:
{ “标题”:“基础——网络”, “描述”:“你的应用程序从远程端点获取这个!”, “电影”:( {“标题”:“星球大战”,“releaseYear”: " 1977 "}, {“标题”:“回到未来”、“releaseYear”: " 1985 "}, {“标题”:“矩阵”,“releaseYear”: " 1999 "}, {“标题”:《盗梦空间》," releaseYear ": " 2010 "}, {“标题”:“星际”、“releaseYear”: " 2014 "} ] } >之前<强>文章(一)强>
当然,上面是最基本的就请求,获取还有可选的第二个参数,可以用来定制HTTP请求一些参数。你可以指定头参数,或是指定使用发布方法,又或是提交数据等等:获取API还支持自定义头,更换方法,添加身体等。
让url=" http://www.yousite.com/xxxx.ashx " 让params={“名称”:“admin”、“密码”:“admin”}; fetch (url, { 方法:“文章”, 标题:{ “接受”:application/json, “内容类型”:“application/json”, }, 身体:JSON.stringify (params) }) >之前上面构建了一个基本的帖子请求,添加了自己的标题:接受和内容类型,添加了身体。
<强>文章(二)强>
让url=" http://www.yousite.com/xxxx.ashx "; 让params="用户名=admin&密码=admin”; fetch (url, { 方法:“文章”, 标题:{ “内容类型”:“应用程序/x-www-form-urlencoded” }, 身体:参数, })((响应)=比;{ 如果(response.ok) { 返回response.json (); } })((json)=比;{ console.log (json) }).catch(错误)=比;{ console.error(错误); }); >之前<强> POST(三)推荐强>
通过上面两种方法,我们还有一种方式可以发送帖子请求,当然这种方式也是被推荐使用的。
如果你的服务器无法识别上面后的数据格式,那么可以尝试传统的形式格式,示例如下:
让REQUEST_URL=' http://www.yousite.com/xxxx.ashx ';//笆紫任颐切枰约捍唇ㄒ桓鯢ormData,来存请求参数的 让参数=new FormData (); 参数。追加(“太”、“30013”); 参数。追加(“pg”,“1”); 参数。追加(“ps”、“20”); fetch (REQUEST_URL, { 方法:“文章”, 身体:参数 })( (结果)=比;{ 如果(result.ok) { console.log(结果) result.json () ( (obj)=比;{ console.log (obj) } ) } } ).catch((错误)=比;{ console.log(错误) Alert.alert(错误的) }) >之前推荐这种方法的好处还有一个,就是可以在FormData中直接传递字节流实现上传图片的功能,代码如下:
uploadImage () { 让formData=https://www.yisu.com/zixun/new formData (); 让文件={uri: uri,类型:“多部分/格式”,名称:' a.jpg '}; formData.append(“图片”文件); fetch (url, { 方法:“文章”, 标题:{ “内容类型”:“多部分/格式”, }, 身体:formData, }) 不要犹豫((响应)=比;response.text ()) 不要犹豫((responseData)中=祝辞{ console.log (responseData”中,responseData)中; }) .catch((错误)=祝辞{console.error(“错误”,错误)}); }反应使土著用取发送网络请求的示例代码