无法从外部访问 Flutter http / rest 服务器 Android
Flutter http / rest server not accessible from outside Android
我正在做一个项目,我需要在 Android 设备和计算机之间进行通信。为了启动这两个设备之间的连接,我想使用具有以下架构的 Rest API 机制:
- 休息服务器:Android 设备使用 https://pub.dev/packages/jaguar
- 休息客户端:我的电脑使用 Python
我当前的 flutter 片段看起来像:
Jaguar server = Jaguar(port: 8080);
server.get("/", (context) => 'Hello');
await server.serve();
在我的 Android 设备上直接从网络浏览器访问“localhost:8080”时,我收到了“Hello”消息,但是当我尝试从我的计算机(位于同一网络),我收到超时错误(在“192.168.0.10:8080”上)。
我的 flutter(或我的设备)似乎没有将网络服务器暴露给我的网络的其余部分,但我不知道为什么..你有什么想法吗?
过了一会儿,我找到了解决办法。这是因为 API 28,Android 阻止明文流量。
要解决这个问题,我们必须像
一样覆盖android:usesCleartextTraffic="true"
<application
...
android:usesCleartextTraffic="true">
...
</application>
我正在做一个项目,我需要在 Android 设备和计算机之间进行通信。为了启动这两个设备之间的连接,我想使用具有以下架构的 Rest API 机制:
- 休息服务器:Android 设备使用 https://pub.dev/packages/jaguar
- 休息客户端:我的电脑使用 Python
我当前的 flutter 片段看起来像:
Jaguar server = Jaguar(port: 8080);
server.get("/", (context) => 'Hello');
await server.serve();
在我的 Android 设备上直接从网络浏览器访问“localhost:8080”时,我收到了“Hello”消息,但是当我尝试从我的计算机(位于同一网络),我收到超时错误(在“192.168.0.10:8080”上)。
我的 flutter(或我的设备)似乎没有将网络服务器暴露给我的网络的其余部分,但我不知道为什么..你有什么想法吗?
过了一会儿,我找到了解决办法。这是因为 API 28,Android 阻止明文流量。
要解决这个问题,我们必须像
一样覆盖android:usesCleartextTraffic="true"
<application
...
android:usesCleartextTraffic="true">
...
</application>