wake-up-neo.com

Reaktiver Abruf, Netzwerkanforderung fehlgeschlagen. localhost nicht verwenden

Ich habe eine App, die den Benutzer mithilfe von Fetch authentifiziert. Es hat bis vor wenigen Tagen funktioniert und ich habe nichts geändert. nur von 0,27 auf 0,28 aktualisiert, Abrufen funktioniert nicht.

ich habe fast 2 Tage gesucht und fast alle Fragen in stackoverflow gelesen. Die meisten Benutzer versuchen, etwas von localhost abzurufen, und wenn sie es in eine tatsächliche IP-Adresse ändern, bekommen sie es zum Laufen. Wenn ich nichts von localhost abrieche, war auch der Code meines Codes vorhanden.

hier ist mein 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();

ich habe versucht, einige neue Projekte zu erstellen, einfach, habe nur ein einfaches Abrufbeispiel für Tutorials verwendet, es gab den gleichen Fehler. Ich habe versucht, meine Website zu öffnen, die versucht, eine Verbindung mit ihr herzustellen, über einen Browser im Emulator. Es funktioniert, aber es scheint, dass meine App keine Verbindung zu einer Website/IP herstellen kann. Es gibt diesen Fehler in der Chrome-Konsole:

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)

eigentlich habe ich das gleiche Problem wie dieser Benutzer hier: Reakt-native Netzwerkanfragen schlagen immer fehl

UPDATE: info.plist von xcode

jede Hilfe wird geschätzt!

27
Ataomega

Sie sollten diesen Link besuchen: https://github.com/facebook/react-native/issues/8118

Sieht aus, als ob das Problem in React Native 0.28 aufgetreten ist. Die Lösung besteht darin, "willkürliche Ladungen zulassen" in der Datei "info.plist" im Ordner "ios> build", den React erstellt. 

Wenn Sie den gesamten ios-Ordner in xcode öffnen, öffnen Sie diese info.plist-Datei. Sie können einen neuen Schlüssel für Allow Arbitrary Loads erstellen, der das Problem beheben soll.

 Allow Arbitrary Loads

60
Ahmed Haque

Setze die info.plist auch für mich nicht. Versuch, auf iOS zu laufen.

0
GustavoSevero

Dieses Problem besteht darin, dass der Code versucht, HTTP-Endpunkte anstelle von HTTPS abzurufen. Dies wird nicht empfohlen. Wenn Sie vom localhost-Server abrufen, wird der localhost-Server über eine einfache Lösung über einen Ngrok https - Endpunkt verfügbar gemacht.

Schritte: 

  1. Laden Sie ngrok herunter und führen Sie ngrok http 8081 von terminal/cmd aus. Dort sollten Sie 8081 in Ihren localhost-Service-Port ändern.

  2. Ngrok gibt Ihnen einen https-Weiterleitungsendpunkt. Verwenden Sie diesen einfach, um auf Ihren localhost-Server zuzugreifen.

0
Allan Jiang