【问题标题】:Not able to fetch data in flutter from local web server无法从本地 Web 服务器获取数据
【发布时间】:2021-09-07 02:33:32
【问题描述】:

我正在尝试从运行在 http://localhost:5050 上的 Web 服务器获取数据并打印出来。起初它给了我一个套接字异常,所以我查了一下,看起来你应该用你的计算机的 IP 地址替换“localhost”,所以我这样做了,现在当我获取它时,它似乎是。 .. 卡住?请求后我有一个打印语句,但它没有打印任何内容,没有错误,没有输出......什么都没有。我正在使用物理设备,这是我的代码:

class AllFlights extends StatefulWidget {
  const AllFlights({Key? key}) : super(key: key);

  @override
  _AllFlightsState createState() => _AllFlightsState();
}

class _AllFlightsState extends State<AllFlights> {

  Future<void> getAllFlights() async {
    try {
      log("here");
      final res = await http.get(Uri.parse("http://192.168.8.100:5050/iflive/atc")); //fetch data -- gets stuck here
      log(res.body); // "log" statement, imported from dart:developer

    } catch (e) {
      log(e.toString());
    }
  }

  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: ElevatedButton(child: Text("All Flights",), onPressed: getAllFlights,),
      ),
    );
  }
}

注意:如果重要的话,Web 服务器在 Docker 容器中运行,端口 5050 映射到主机上的端口 5050。

编辑:我刚刚注意到在调用 api 2-3 分钟后,它给了我一个套接字异常:[log] SocketException: OS Error: Connection timed out, errno = 110, address = 10.0.2.2, port = 44046

这正常吗?

【问题讨论】:

  • 由于 Web 服务器在 Docker 容器中运行,端口 5050 映射到主机上的端口 5050,为什么要使用端口 5051? Uri.parse("localhost:5050/iflive/atc") 应该可以工作。如果没有,请尝试使用邮递员并查看您收到的对 Get 请求的响应
  • 抱歉,这是我在输入问题时的拼写错误,实际代码确实有正确的端口 (5050)
  • 确定不是服务器端的问题?
  • @MichailHighkhan 从 Postman 获取数据,浏览器工作正常
  • 仅供参考,请不要添加“已解决”,而是接受答案 - 即使是您自己的答案

标签: flutter dart


【解决方案1】:

更新:我可以通过使用 adb (Android Debug Bridge) 来解决这个问题。

adb reverse tcp:5050 tcp:5050

此命令将您手机在 5050 端口上的请求路由到您计算机的 5050 端口。现在您可以直接向 localhost 发出请求,而不是在您的计算机 IP 上。第一个端口参数是您手机的端口,第二个是您计算机的端口。

示例:adb reverse tcp:5000 tcp:5050 会将您手机上的端口 5000 映射到计算机上的 5050。

祝大家有个愉快的一天!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-14
    • 2016-08-03
    • 1970-01-01
    • 2020-03-21
    相关资源
    最近更新 更多