SocketException: Connection refused (OS Error: Connection refused, errno = 111), address = 127.0.0.1, port = 44164。

4
在我的Flutter应用中,我正在使用Flask服务器进行测试。我启动了我的服务器并在Flutter应用中运行了API URL。但是出现了“SocketException:Connection refused(OS Error:Connection refused,errno = 111),地址= 127.0.0.1,端口= 44164。”的错误提示信息。
var headers = {'Content-Type': 'application/json'};
      var request =
          http.Request('POST', Uri.parse('http://127.0.0.1:5000/addrec'));
      request.body = json.encode({
        "name": UploadedName,
        "grade": Uploadedgrade,
        "loaction": Uploadedlocation,
        "like": Uploadedlike,
        "admission": Uploadedadmission,
        "comments": Uploadedcomments,
        "entery_time": UploadeddataentryTime
      });
      request.headers.addAll(headers);

      http.StreamedResponse response = await request.send();

      if (response.statusCode == 200) {
        print(await response.stream.bytesToString());
      } else {
        print(response.reasonPhrase);
      }

我正在使用实际的安卓设备运行应用程序。


我正在我的电脑上本地运行服务器,并且我正在使用 Android 设备而不是模拟器。 - Krishna prasad
然后您可以使用端口与您的IP地址。 - Codertjay
2个回答

6
这是因为设备上的localhost(或127.0.0.1)仅对设备本身可访问。
解决方法1: 您可以通过在命令提示符上运行adb reverselocalhost端口反向代理到运行Android设备/模拟器的设备上。
adb reverse tcp:5000 tcp:5000

解决方案2

使用运行API的机器的IP地址。同时,API应该监听IP 0.0.0.0 来使其在本地主机外可访问。

假设API机器的IP是192.168.1.123,那么它将类似于:

Uri.parse('http://192.168.1.123:5000/addrec')

请注意,将API更改为侦听 0.0.0.0 是一种安全风险,因为API将对外开放。


0

如果您使用带有动态IP 0.0.0.0:端口的Python服务器,则还有另一种方法

您可以只使用Linux shell

ipconfig

或者在Windows上使用

ifconfig

以获取您的PC IP地址并访问端口

然后您可以使用

ipaddress:port


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接