首页 > 代码库 > React Native NetWork request failed

React Native NetWork request failed

今天敲代码的时候被两个网络请求的问题搞了一天,不担心累而且心碎

记录一下,吃一堑长一智,不知道我老了再来看还能不能看懂

第一个问题:图片上传到服务器

这里代码就不贴出来了,使用的post提交的格式。同样的代码,在iOS上可以正常上传,在android上上传就是network request failed,

我把代码对比了半天就是一模一样,然后报这种无厘头的错误着实让我心碎,后来android调试,iOS调试搞得我

已经快疯了,最后才发现原来是是我传的数据不对,上传图片到服务器使用的是本地图片URL,我忽略了这一点,

总觉得是代码的问题,问题的方向就是错误的,然后左调试右调试才发现不对的地方。以后记住了,像这种post提

交的请求,网络请求失败的话肯定是数据问题,因为这都没走进服务器。

第二个问题:普通的post请求。

这个问题能够解决纯属偶然,因为我现在还不知道原因出现在哪,情况和第一个比较像,也是post提交,然后报一样的

错误network request failed,,因为刚好把第一个问题解决,再发现这种情况我肯定想肯定是数据不对了,然后就去看数据,

看了半天和后台对比了半天发现不是数据问题,这下真让我醉了,又是对接口,又是android ,iOS对比调试,我感觉我今

天真是被谁诅咒了明明是一个很简单的问题却偏要让我做不出来,最后解决的也是出于偶然,找了别的地方post请求的,

对比一下,然后以碰运气的想法写成这样

  fetch(url,{        method: "POST",        headers: {            "Content-Type": "application/x-www-form-urlencoded"        },        body: "fileList=" + file + "&token=" + this.state.token    })    .then((response) => response.json())

  一开始我是这样写的,这不是一样的,就是大概给个格式,因为我不想重写了,

这个地方和上面的代码不同的地方就是这里用的表单,然后用的options包起来了我们的数据,

对,你猜的没错,就是因为这个options的问题,可能我说的不对,但是我的发现就是因为这个问题,

我不用options 包起来像上面的代码一样直接请求就OK

let formData = http://www.mamicode.com/new FormData();"Content-Type":"multipart/form-data"};    options.method=‘POST‘;    var url = "http://10.4.19.105:8081/aist-filesvr-web/webUploader/uploadPicture";    fetch(url,options)    .then((response)=> response.json())    .then((responseData)=>{
    console.warn(responseData);
}) .catch((error) => { console.warn(error); }) .done();

  最后我想说今天我很不开心  

React Native NetWork request failed