在我的flutter应用程序中,我使用烧瓶服务器进行测试。我启动了我的服务器并在我的flutter应用程序中运行API url。但是SocketException:拒绝连接(操作系统错误:拒绝连接,错误号=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设备来运行应用程序。
发生这种情况是因为设备上的localhost
(或127.0.0.1
(只能由设备本身访问。
解决方案1
您可以在命令提示符下将localhost
端口反向代理到运行adb reverse
的Android设备/模拟器,如下所示:
adb reverse tcp:5000 tcp:5000
解决方案2
使用运行API的计算机的IP地址。此外,API应该监听IP0.0.0.0
,以便可以在本地主机外部访问。
假设API机器的IP是192.168.1.123
,它将类似于:
Uri.parse('http://192.168.1.123:5000/addrec')
请注意,因为将API更改为侦听0.0.0.0
是一个安全风险,因为API将可供外部世界访问。
使用动态ip 0.0.0.0的python服务器还有另一种方法:端口
你可以只使用linux外壳
ipconfig
或windows是
ifconfig
获取您的个人电脑IP地址并访问端口
然后你使用
ipaddress:端口