最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

当请求从同一网络上的android设备访问服务器时,无法通过flutter应用程序连接到node.js服务器吗?

IT培训 admin 1浏览 0评论

当请求从同一网络上的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.

当请求从同一网络上的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.

发布评论

评论列表 (0)

  1. 暂无评论