web-dev-qa-db-fra.com

Réactivité de récupération native, la requête réseau a échoué. ne pas utiliser localhost

J'ai une application qui im ​​utilise fetch pour authentifier l'utilisateur. cela fonctionnait jusqu'à il y a quelques jours et je n'ai rien changé. vient de passer de 0,27 à 0,28, ne récupère pas ne fonctionne pas.

j'ai cherché pendant presque 2 jours et j'ai lu presque toutes les questions dans stackoverflow. la plupart des utilisateurs essayant d'aller chercher quelque chose chez localhost, et quand ils la changent en adresse ip réelle, ils l'obtiennent pour qu'ils fonctionnent .

voici mon 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();

j'ai essayé de faire quelques nouveaux projets, simple, juste utilisé un exemple simple de chercher des tutoriels, il a donné la même erreur. j'ai essayé d'ouvrir mon site Web qui im ​​essayant de s'y connecter, via un navigateur dans l'émulateur, cela fonctionne, mais il semble que mon application ne puisse se connecter à aucun site Web/ip. cela donne cette erreur dans la console chrome:

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)

en fait, j'ai le même problème que cet utilisateur ici: La requête réseau React-native échoue toujours

UPDATE: info.plist à partir de xcode

toute aide serait appréciée!

27
Ataomega

Vous devriez vérifier ce lien: https://github.com/facebook/react-native/issues/8118

On dirait que le problème est apparu dans React Native 0.28. La solution consiste à "Autoriser les charges arbitraires" dans le fichier info.plist qui se trouve dans le dossier de compilation ios> créé par React. 

Si vous ouvrez l'intégralité du dossier ios dans xcode, puis ouvrez ce fichier info.plist, vous pouvez créer une nouvelle clé pour l'option Autoriser les chargements arbitraires. Ce problème devrait être résolu.

 Allow Arbitrary Loads

60
Ahmed Haque

Définir l'info.plist ne fonctionne pas pour moi aussi. Essayer de fonctionner sur iOS.

0
GustavoSevero

Ce problème est que le code tente d'extraire le terminal HTTP au lieu de HTTPS, ce qui n'est pas recommandé. Si vous extrayez du serveur localhost, une solution simple consiste à exposer votre serveur localhost via un point de terminaison Ngrok https.

Pas: 

  1. Téléchargez ngrok et exécutez ngrok http 8081 à partir de terminal/cmd, où vous devez remplacer 8081 par votre port de service localhost.

  2. Ngrok vous donnera un point de transfert https, utilisez-le simplement pour accéder à votre serveur localhost.

0
Allan Jiang