反应本机表单请求
React Native Form request
我正在尝试从 Android 模拟器发送简单的 POST Forms React Native Fetch 请求 到 NodeJS 服务器。 NodeJS 服务器没有检测到这一点(它通过使用 Postman api 工作)。请帮助我:)
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));
})
React Native 获取:
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'});
});
}
模拟器还显示了一个通信:
Possible Unhandled Promise Resection (id: 0): Network request
failed...
但是提供了catch功能
当您在 Android 模拟器中使用 "localhost" 时,指的是移动设备而不是您的计算机。
您可以在应用程序中将 localhost 替换为“10.0.2.2”,这是 android 模拟器主机的别名,在这种情况下,就是您的计算机。
参见:https://developer.android.com/studio/run/emulator-commandline.html#networkaddresses
或者
获取网络地址,您也可以在手机上运行(如果在同一网络中)。在 windows 中,在您的 CMD 中使用命令 ipconfig 获取网络 IPv4 地址。
我正在尝试从 Android 模拟器发送简单的 POST Forms React Native Fetch 请求 到 NodeJS 服务器。 NodeJS 服务器没有检测到这一点(它通过使用 Postman api 工作)。请帮助我:)
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));
})
React Native 获取:
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'});
});
}
模拟器还显示了一个通信:
Possible Unhandled Promise Resection (id: 0): Network request failed...
但是提供了catch功能
当您在 Android 模拟器中使用 "localhost" 时,指的是移动设备而不是您的计算机。
您可以在应用程序中将 localhost 替换为“10.0.2.2”,这是 android 模拟器主机的别名,在这种情况下,就是您的计算机。
参见:https://developer.android.com/studio/run/emulator-commandline.html#networkaddresses
或者
获取网络地址,您也可以在手机上运行(如果在同一网络中)。在 windows 中,在您的 CMD 中使用命令 ipconfig 获取网络 IPv4 地址。