Ich verwende die Fetch-API in meiner reagierenden nativen Android-App, um Anfragen an eine lokale API zu senden. Normalerweise frage ich diese API von react Web-Apps unter http://localhost:8163.Reactive Native Android Fetch bei Verbindung mit lokaler API fehlgeschlagen
Ich teste meine App auf meinem physischen Gerät im Debugger-Modus. Ich habe irgendwo gelesen, dass reactive-native localhost nicht wie eine Web-App abfragen kann. Anscheinend müssen Sie http://10.0.2.2:[PORT_NUMBER_HERE]/
verwenden, das ein Alias für `http://127.0.0.1:[PORT_NUMBER_HERE] entsprechend den Android-Emulator-Docks ist. Ich bin mir nicht sicher, ob ich das zum Testen auf einem physischen Gerät tun soll.
Mein Code holen sieht wie folgt aus:
fetchToken() {
fetch('http://10.0.2.2:8163/extension/auth', {
method: 'GET',
headers: {
'Accept': 'application/json',
'Content-type': 'application/json'
}
})
.then((response)) => console.log('successful fetchToken response: ', response.json()))
.catch((error) => console.log('fetchToken error: ', error))
.done();
}
Die Anforderung immer für eine Weile hängt und erreicht dann den catch
Block mit dem nicht hilfreich Fehler TypeError: Network request failed(...)
. Wenn ich die Protokolle für meine lokale API überprüfe, registrieren sie die Anfrage überhaupt nicht.
So habe ich keine Ahnung, ob ich meine lokale API richtig abfragen, um die Ressource zu bekommen, die ich will, und wenn ich bin, weiß ich nicht, warum der Abruf fehlschlägt.
ja, das ist, weil Sie Ihr Android-Emulator eine andere Maschine von Ihrem lokalen dev Computer.Für ein physisches Gerät ist das genau wie beim Testen von einem anderen Computer: Entweder haben Sie ein Namensauflösungssystem oder verwenden Sie die IP-Adresse – njzk2
@ njzk2 Könnten Sie das näher erläutern? Ich habe das gleiche Problem, aber nicht sicher, was meinst du mit einem Namensauflösungssystem? Ich benutze die IP-Adresse meines Computers, wie in der react-native docs .. –
@ Andrea.cabral Namensauflösung wird in der Regel von DNS getan. – njzk2