React-Native fetch,网络请求失败。不使用localhost [英] React-Native fetch, Network request failed. not using localhost

查看:2766
本文介绍了React-Native fetch,网络请求失败。不使用localhost的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个应用程序,我使用fetch来验证用户身份。它在几天前工作,我没有改变任何东西。刚刚从0.27升级到0.28,没有提取不起作用。



我搜索了将近2天,我已经阅读了stackoverflow中的几乎所有问题。大多数用户试图从localhost获取内容,当他们将其更改为实际的IP地址时,他们就可以使用它。
但是我没有从localhost获取任何东西,我的代码也曾用过。



这是我的代码:



  fetch('http://somesite.com/app/connect', {method:'POST',headers: {'接受':'application / json','Content-Type':'application / json','language':'en-US','Authorization':'Bearer'+ access_token,},body:JSON.stringify ({uid:uid,refresh_token:refresh_token,token:access_token,device:device_id,device_name:device_name,})})。then((response)=> response.json())。then((responseData)=> {console.log(JSON.stringify(responseData.body))})。catch((err)=> {console.log('发生了一些错误'); console.log(错误);})。done() ;  



我试图制作一些新项目,简单,只是用过一个简单的fetch示例来自教程,它给出了同样的错误。我试图打开我的网站,我试图连接到它,通过模拟器中的浏览器,它的工作原理,但似乎通过我,应用程序无法连接到任何网站/ IP。它在chrome控制台中出现此错误:

  TypeError:网络请求在XMLHttpRequest.xhr.onerror上失败了
(http: //localhost:8081/index.ios.bundle?platform=ios&dev=true&hot=true:28193:8)
。在XMLHttpRequest.dispatchEvent(HTTP://本地主机:8081 / index.ios.bundle ?平台= IOS&安培; dev的=真安培;热=真:14591:15)
。在XMLHttpRequest.setReadyState(HTTP://本地主机:8081 / index.ios.bundle平台= IOS&安培; dev的=真安培;热= true:29573:6)
在XMLHttpRequest .__ didCompleteResponse(http:// localhost:8081 / index.ios.bundle?platform = ios& dev = true& hot = true:29431:6)
at http:// localhost:8081 / index.ios.bundle?platform = ios& dev = true& hot = true:29506:52
at RCTDeviceEventEmitter.emit(http:// localhost:8081 / index.ios。 bundle?platform = ios& dev = true& hot = true:13428:23)
在MessageQueue .__ callFunction(http:// localhost:8081 / index.ios.bundle?platform = ios& dev = true& hot = true:11999:23)
at http:// l ocalhost:8081 / index.ios.bundle?platform = ios& dev = true& hot = true:11906:8
at guard(http:// localhost:8081 / index.ios.bundle?platform = ios& dev的=真安培;热=真:11857:1)在MessageQueue.callFunctionReturnFlushedQueue(
的http://本地主机:8081 / index.ios.bundle平台= IOS&安培; dev的=真安培;热=真:11905:1 )

实际上我和这个用户有同样的问题:


I have an app, which im using fetch to authenticate user. it was working till few days ago and i haven't change anything. just upgraded from react 0.27 to 0.28, not fetch is not working.

i have searched for almost 2 days and i have read almost all questions in stackoverflow. most of users trying to fetch something from localhost, and when they change it to actual ip address , they get it to work. but im not fetching anything from localhost, also mine code used to be working.

here is my code :

fetch('http://somesite.com/app/connect', {
      method: 'POST',
      headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json',
        'language':'en-US',
        'Authorization': 'Bearer ' + access_token,
      },
      body: JSON.stringify({
        uid: uid,
        refresh_token: refresh_token,
        token: access_token,
        device: device_id,
        device_name: device_name,
      })
    })
.then((response) => response.json())
.then((responseData) => {
    console.log(JSON.stringify(responseData.body))
})
.catch((err)=> {
  console.log('Some errors occured');
  console.log(err);
})
.done();

i tried to make some new projects, simple, just used a simple fetch example fro tutorials, it gave same error. i tried to open my website which im trying to connect to it, through browser in emulator, it works, but it seems through my, app cannot connect to any website/ip. it gives this error in chrome console :

TypeError: Network request failed
    at XMLHttpRequest.xhr.onerror (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&hot=true:28193:8)
    at XMLHttpRequest.dispatchEvent (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&hot=true:14591:15)
    at XMLHttpRequest.setReadyState (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&hot=true:29573:6)
    at XMLHttpRequest.__didCompleteResponse (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&hot=true:29431:6)
    at http://localhost:8081/index.ios.bundle?platform=ios&dev=true&hot=true:29506:52
    at RCTDeviceEventEmitter.emit (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&hot=true:13428:23)
    at MessageQueue.__callFunction (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&hot=true:11999:23)
    at http://localhost:8081/index.ios.bundle?platform=ios&dev=true&hot=true:11906:8
    at guard (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&hot=true:11857:1)
    at MessageQueue.callFunctionReturnFlushedQueue (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&hot=true:11905:1)

actually i have the same problem as this user here : React-native network request always fails

UPDATE : info.plist from xcode

any help will be appreciated!

解决方案

You should check out this link: https://github.com/facebook/react-native/issues/8118

Looks like the issue emerged in React Native 0.28. Solution is to "Allow Arbitrary Loads" in the info.plist file found in the ios>build folder that React creates.

If you open the entire ios folder in xcode, then open this info.plist file you can create a new key to Allow Arbitrary Loads and it should fix your issue.

这篇关于React-Native fetch,网络请求失败。不使用localhost的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆