2016-12-07 3 views
1

Ich versuche zu senden einfache POST Forms Reagieren Native Fetch Anfrage von einem Android-Emulator NodeJS-Server. Der NodeJS Server erkennt dies nicht (es funktioniert mit Postman API). Bitte helfen Sie mir :)React Native Form Anfrage

Server.js:

var express = require('express'); 
var app = express(); 

var accs = []; 

var server = app.listen(8082, function() { 
    var host = server.address().address 
    var port = server.address().port 

    console.log("Example app listening at http://%s:%s", host, port) 
}) 

app.post('/register', function(req, res) { 
    console.log("here"); 
    let login = req.query.login; 
    let password = req.query.password; 
    accs.push({login: hashCode(login), password: hashCode(password)}) 
    console.log(login + " " + password); 
    res.send("Created: L:" + hashCode(login) + " P:" + hashCode(password)); 
}) 

Reagieren india Fetch:

registerAcc() { 
    var details = { 
    'login': 'Login', 
    'password': 'Password!', 
    }; 

    var formBody = []; 
    for (var property in details) { 
    var encodedKey = encodeURIComponent(property); 
    var encodedValue = encodeURIComponent(details[property]); 
    formBody.push(encodedKey + "=" + encodedValue); 
    } 
    formBody = formBody.join("&"); 

    fetch('http://localhost:8082/register', { 
    method: 'POST', 
    headers: { 
     'Accept': 'application/json, application/xml, text/plain, text/html, *.*', 
     'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8' 
    }, 
     body: formBody 
    }).then((response) => { 
     this.setState({msg : "1"}) 
    }).catch((error) => { 
     this.setState({msg : '2'}); 
    }); 
    } 

Der Emulator zeigen auch eine kommunizieren:

Mögliche Unhandle Versprechen Resektion (id : 0): Netzwerkanforderung fehlgeschlagen ...

Aber die Fangfunktion ist vorhanden.

Antwort

0

Wenn Sie "Localhost" in Android Emulator verwenden, bezieht sich auf mobile und nicht auf Ihrem Computer.

Sie können localhost durch "10.0.2.2" in der App ersetzen, das ist ein Alias ​​für den Host von Android-Emulator, dass in dem Fall, Ihren Computer.

See: https://developer.android.com/studio/run/emulator-commandline.html#networkaddresses

Oder

die Netzwerkadresse, und Sie können auch auf Ihrem Handy laufen (wenn in demselben Netzwerk). Verwenden Sie in Windows den Befehl ipconfig in Ihrem CMD, um IPv4-Netzwerkadresse zu erhalten.

+1

Vielen Dank! Für mich funktioniert es mit IPv4 – kapuchaster