每当我尝试在大约20秒后拨打http呼叫,我都会在控制台中出现以下错误:
E/flutter ( 8274): [ERROR:flutter/shell/common/shell.cc(184)] Dart Error: Unhandled exception:
E/flutter ( 8274): SocketException: Failed host lookup: 'flutter-project-xxxxx.firebaseio.com' (OS Error: No address associated with hostname, errno = 7)
我通过应用程序http包调用的每种方法和每种路线都会发生此错误。
我正在使用Windows Studio中的AVD虚拟设备在Windows上开发Flutter应用。
版本: http:^ 0.12.0 + 1 颤动:1.0
情况:
在家中或通过手机进行网络共享: 连接在虚拟设备的每个部分上都能正常工作
从我的工作网络(位于防火墙之后):
只有使用Android Web View,我才能毫无问题地浏览Internet(我什至可以调用代码中使用的相同URL,并且它可以工作)。 在测试我的应用程序时,在虚拟设备中使用任何其他应用程序(Chrome,Google Play,ecc ...),特别是“ SocketException”时,出现连接错误。
从该应用发出的呼叫之间有什么区别? 有没有一种方法可以路由我的应用程序调用,就像在网络视图中一样?
谢谢!
答案 0 :(得分:3)
添加 Internet权限不仅是一种解决方案,
还必须确保您在线,无论是移动设备还是模拟器
- 确保您在线(无论是移动设备还是仿真器)
- 确保您已在应用程序的android / app / src / main / AndroidManifest.xml中授予互联网许可
答案 1 :(得分:3)
通过启用WIFI,它对我有用,并确保您还在自动添加的android清单中添加了互联网权限,但必须确保。如果仍然没有,则使缓存无效并重新启动希望它可以工作
答案 2 :(得分:3)
确保您的移动设备或仿真器已连接到互联网
答案 3 :(得分:3)
尝试将<uses-permission android:name="android.permission.INTERNET" />
添加到您的AndroidManifest.xml
文件中。
答案 4 :(得分:2)
如果您使用的是模拟器,请确保移动数据处于活动状态
答案 5 :(得分:2)
当我在设备上启用wifi时,它工作正常。
答案 6 :(得分:1)
如果在使用flutter_socket_io
插件时遇到此错误,请不要忘记初始化套接字,即socketIO.init(); socketIO.connect();
,然后再尝试订阅它。省略该错误时,我会收到与上述相同的错误。
答案 7 :(得分:1)
检查是否在gradle设置中启用了脱机工作。 文件->设置->构建->构建工具->离线工作
如果启用或选中了它,则取消选中它。
答案 8 :(得分:1)
答案 9 :(得分:1)
选择AVD Manager,然后选择您的仿真器,在“操作”菜单上单击向下选项符号,然后选择“擦除数据”,然后重新启动仿真器。它对我有用。
答案 10 :(得分:1)
确保您的仿真器或设备已连接到Internet。 如果您的模拟器无法连接到Internet,请使用VPN。
答案 11 :(得分:1)
有时,其他wifi可能会干扰您连接的wifi,这也可能导致此错误。尝试将连接的wifi的频道设置为自动或远离其他wifi的频道。
答案 12 :(得分:0)
就我而言,这是因为我的手机没有连接到互联网
只需启用互联网连接
答案 13 :(得分:0)
我的问题是我使用的是 VPN。当连接到我电脑上的 VPN 时,模拟器无法访问互联网。它可能会帮助某人。
答案 14 :(得分:0)
我特意断开了模拟器 wifi 的连接,看看会发生什么(因为可能会出现没有互联网可用的情况)。该错误将我带到了这里,但是,我所看到的只是解决方法,而不是错误处理。确实,应用应该能够优雅地处理错误并且不会因为缺乏连接而崩溃。
到目前为止,我所做的只是捕捉错误,如果返回码为 -1(或 200 以外的任何值),我知道我遇到了问题,可以让应用做出适当的响应。
var request = new http.MultipartRequest("POST", uri);
// multipart that takes file
var multipartFile = new http.MultipartFile('file', stream, length,
filename: fileToUpload.path);
// add file to multipart
request.files.add(multipartFile);
// send
try {
var response = await request.send();
print(response.statusCode);
// listen for response
response.stream.transform(utf8.decoder).listen((value) {
print(value);
});
return response.statusCode;
}
catch (e)
{
return -1;
}
答案 15 :(得分:0)
正如其他人所说,这绝对是互联网问题。 @petro 和 @Tushar Nikam 的回应让我朝着正确的方向前进。我的模拟器处于飞行模式,但我不知道如何;这是我 90% 的时间都在使用的那个。我建议检查任何可能会阻止互联网连接的东西。
答案 16 :(得分:0)
对我来说,这只是 Flutter 中带有“Uri.https(...)”函数的错误 url。 用浏览器检查地址是否正确
答案 17 :(得分:0)
如果你使用的是 vscode,你会得到 gai_error=0,如果 http 连接成功
这里是放置互联网许可的正确位置,因为知道位置非常具有挑战性
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.appName">
<uses-permission android:name="android.permission.INTERNET" />
在cmd或visual studio code终端上运行flutter run命令
答案 18 :(得分:0)
在模拟器上运行应用程序时,我遇到了同样的问题。
我的笔记本电脑通过手机的移动热点连接到了互联网。 但是显然,仿真器无法访问互联网
稍后,我切换到了 Wi-Fi 路由器连接,并且应用程序按预期顺利进行。
我不确定,但是是否要授予任何特殊访问权限?
提示:尝试在模拟器上搜索某些内容以检查Internet连接
答案 19 :(得分:0)
检查您的网址,就我而言,我使用了错误的网址。
答案 20 :(得分:0)
即使我有同样的问题。我重新启动了模拟器,它可以正常工作!
答案 21 :(得分:0)
即使添加后
<uses-permission android:name="android.permission.INTERNET"/>
在您的android / app / src / main / AndroidManifest.xml中,如果您仍然发现问题,则
网站的服务器IP地址可能存在错误,例如:
找不到服务器IP地址
最好等待一段时间,并确保重新启动wifi,它对我有用。
答案 22 :(得分:0)
仔细检查/确保您拥有
<uses-permission android:name="android.permission.INTERNET" />
在应用程序的android / app / src / main / AndroidManifest.xml中
答案 23 :(得分:0)
答案 24 :(得分:0)
检查wifi是否已连接。我的设备在重新启动wifi后工作。
答案 25 :(得分:0)
该问题基本上是在设备尝试访问任何Internet资源时要解决的,请添加 到AndroidManifest.xml文件@ android / app / src位置。
答案 26 :(得分:0)
有同样的问题。已将uses-permission android:name =“ android.permission.INTERNET”添加到 “ android / app / src / main / AndroidManifest.xml”。仍然无法工作,然后我退出并重新启动模拟器,然后工作了。
答案 27 :(得分:0)
即使在调试模式下,我也遇到该错误(android / app / src / debug / AndroidManifest.xml具有
<uses-permission android:name="android.permission.INTERNET" />
)
我擦除了数据
C:\Users\username\AppData\Local\Android\Sdk\emulator> .\emulator -avd Nexus_5X_API_28 -wipe-data
然后运行main.dart。
答案 28 :(得分:-2)
翻译:就我而言,计算机具有互联网,但模拟器没有。我在模拟器上配置了连接并解决了该问题。
原件:没有备忘录,estut com互联网公司,emuladornão。配置解决方案。