SocketException:连接被拒绝(操作系统错误:连接被拒绝,errno = 111),地址 = 127.0.0.1,端口 = 44164

Kri*_*sad 4 python flask dart flutter

在我的 flutter 应用程序中,我使用 Flask 服务器进行测试。我启动了我的服务器并在我的 flutter 应用程序中运行 API url。但是SocketException:连接被拒绝(操作系统错误:连接被拒绝,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);
      }
Run Code Online (Sandbox Code Playgroud)

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

lep*_*sch 7

发生这种情况是因为设备上的localhost(或127.0.0.1) 只能由设备本身访问。

解决方案1

您可以将端口反向localhost代理到在命令提示符下运行的 Android 设备/模拟器,adb reverse如下所示:

adb reverse tcp:5000 tcp:5000
Run Code Online (Sandbox Code Playgroud)

解决方案2

使用运行 API 的计算机的 IP 地址。此外,API 应该侦听 IP,0.0.0.0以便在本地主机之外进行访问。

假设 API 机器的 IP192.168.1.123类似于:

adb reverse tcp:5000 tcp:5000
Run Code Online (Sandbox Code Playgroud)

请务必小心,因为更改要侦听的 API0.0.0.0存在安全风险,因为 API 将可供外界访问。