2016-06-28 11 views
18

Ich habe eine App, die mit fetch, um Benutzer zu authentifizieren. Es hat bis vor ein paar Tagen funktioniert und ich habe nichts geändert. gerade aktualisiert von react 0.27 auf 0.28, nicht fetch funktioniert nicht.React-Native Fetch, Netzwerkanforderung fehlgeschlagen. nicht mit localhost

Ich habe fast 2 Tage gesucht und ich habe fast alle Fragen in Stackoverflow gelesen. die meisten Benutzer versuchen, etwas von localhost abzurufen, und wenn sie es in die tatsächliche IP-Adresse ändern, bringen sie es zum Laufen. aber ich habe nichts von localhost, auch mine code verwendet, um zu arbeiten.

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 machen, einfach, benutzt nur ein einfaches Beispiel holen Tutorials fro, gab es denselben Fehler. Ich habe versucht, meine Website zu öffnen, die versucht, eine Verbindung zu ihr herzustellen, durch den Browser im Emulator, es funktioniert, aber es scheint durch meine, App kann keine Verbindung zu irgendeiner Website/IP herstellen. es gibt diesen Fehler in Chromkonsole:

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) 

tatsächlich i das gleiche Problem wie dieser Benutzer habe hier: React-native network request always fails

UPDATE: info.plist from xcode

jede Hilfe dankbar sein!

+0

Was haben Sie unter 'NSAppTransportSecurity' in Ihrer info.plist Datei für Ihre Anwendung? –

+0

Danke für Ihre Antwort. Ich habe Screenshot zum Hauptbeitrag hinzugefügt. auch Sie können es hier sehen http://i.stack.imgur.com/vvqMk.png – Ataomega

+0

@Ataomega Haben Sie versucht, Ihren Computer neu zu starten? Ich hatte das gleiche Problem und nur ein einfacher Neustart hat es behoben. –

Antwort

46

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

Sieht aus wie das Problem in React 0,28 india entstanden. Die Lösung besteht darin, "Arbitrary Loads" in der Datei info.plist zuzulassen, die sich im Ordner ios> build befindet, den React erstellt.

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

Allow Arbitrary Loads

+1

Problem bereits gelöst, danke trotzdem – Ataomega

+1

@Ataomega Wie hast du das Problem behoben Ich bin in Andriod – Carlos

+0

@Carlos als letzte Antwort sagt ... – Ataomega