当请求从同一网络上的android设备访问服务器时,无法通过flutter应用程序连接到node.js服务器吗?
我正在尝试连接到笔记本电脑上运行的node.js服务器,我编写了一个flutter应用程序,当通过同一台笔记本电脑上的模拟器运行时,它可以很好地连接到服务器,但是当我构建apk并安装该应用程序时在我的android设备上,它未连接到服务器。笔记本电脑已连接到手机的热点。另外,当我通过应用程序“ REST Api客户端”发送相同的请求时,它连接到服务器并得到正确的响应。我在这里想念的是什么?我可以做些什么?
Future<String> _makeGetRequest(name, pass) async {
Response response1 =
await post(_localhost(), headers: {"username": name, "password": pass});
print(response1.body);
return response1.body;
}
String _localhost() {
if (Platform.isAndroid)
return 'http://192.168.43.236:3000/';
else
return 'http://localhost:3000';
}
Node.js服务器代码
import express = require('express');
import bodyParser = require('body-parser');
const app = express();
const hostname: string = '192.168.43.236';
const port = 3000;
const username = 'username';
const pass = '123456';
app.use(bodyParser.urlencoded({ extended: false }));
app.post('/', (req, res) => {
const postBody = req.headers;
console.log(postBody.username);
console.log(postBody.password);
if (req.headers.username == username && req.headers.password == pass)
res.status(200).send('Success');
else if (req.headers.username != username) {
res.status(404).send('User not found');
}
else if (req.headers.username == username && req.headers.password != pass)
res.status(401).send('Incorrect password');
else
res.status(500).send('Internal Server Error');
});
app.listen(port,hostname, () => {
console.info(`Server running at http://${hostname}:${port}/`);
});
回答如下:好,所以对于任何有相同问题的人,我都可以通过为我的应用程序提供Internet权限来使其正常工作。为此,只需编辑AndroidManifest.xml文件like so.