gpt4 book ai didi

dart - 在真实设备模式下模拟或运行时不处理 http 请求,但在模拟器上工作正常

转载 作者:行者123 更新时间:2023-12-03 02:47:54 24 4
gpt4 key购买 nike

在我的 flutter 应用程序中,我有用户注册表,它使用 http 请求将数据发送到服务器。

每当我提交表单并使用 发送请求时模拟器 (API 27 和 android 版本 8.1)运行良好,但在 真正的安卓设备它在 上给出错误本地主机 服务器
SocketException: OS Error: Connection refused, errno = 111, address = 127.0.0.1, port = 48134
我正在使用 7.1 版的 Android 设备

代码:

final JsonDecoder _decoder = new JsonDecoder();

Future<dynamic> post() {
return http.post(
"http://192.168.31.16:9091/myprj/api/register",
body: json.encode({
"username": "rahul",
"password": "rahul",
"email": "myemail@gmail.com",
}),
headers: {"Accept": "application/json","Content-type": "application/json",},
).then((http.Response response) {
final String res = response.body;
final int statusCode = response.statusCode;

if (statusCode < 200 || statusCode > 400 || json == null) {
throw new Exception("Error while fetching data");
}
return _decoder.convert(res);
});
}

在那里,我使用了本地网络 IP 192.168.31.16而不是 localhost .
当我使用实时服务器地址时,它也可以使用 android 设备正常工作。问题仅在于具有真实 android 设备的 localhost http 请求服务器。

希望你明白我的问题。

最佳答案

这很可能与您运行服务器的方式有关,因为只要您输入了正确的 IP 地址并且您的设备连接到同一网络,这似乎是正确的。

曾经让我感到困惑的是,如果您在“localhost”或“127.0.0.1”上运行您的服务器,它实际上可能不会按照您的想法行事。这些都应该托管在仅允许从您自己的计算机访问的本地重定向中。模拟器很可能已经设置了一些东西,所以它就像连接到本地主机一样。

如果您在 192.168.31.16 上运行服务器,那可能会更成功,但您可能无法从模拟器访问它。因此,尝试在 0.0.0.0:9091 上运行,因为这意味着“本地计算机上的所有 IP 地址”(如果您还没有)。

我建议在您的服务器上放置一个虚拟端点(如/healthz),它只返回一个 html 或纯文本页面,说“它有效”或类似的东西。然后打开手机的网络浏览器并转到那里。如果它有效,您就知道您的手机能够与计算机通信,然后我们就可以开始研究编码问题了。如果它不起作用,您知道这与服务器的配置有关。

关于dart - 在真实设备模式下模拟或运行时不处理 http 请求,但在模拟器上工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53342939/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com