如何修复HttpException:在接收完整标头之前关闭连接

119

我最近在我的应用中升级了flutter版本。但当我想要调试应用程序时,它会显示以下错误:

连接服务协议出错:HttpException: Connection closed before full header was received, URI = http://127.0.0.1:50795/ws

是否有其他人在升级flutter版本后遇到相同的问题?如果有任何解决方法,请分享。


3
在我的情况下,flutter clean 起了作用。 - Stack Underflow
不幸的是,我在VS Code的终端中运行了“flutter clean”,但没有先关闭WIFI。现在我遇到了很多错误,比如runApp未定义,所有的build、.dart tool、.packages都被删除了。现在我该怎么办? - Suraj Oberai
在真实设备上启动小部件测试时遇到相同的错误。 - th_lo
19个回答

0

我找到了解决方案/解决方法。对我来说,在物理设备上可以工作,但在模拟器上无法工作。简单的解决方法是使用x86环境的模拟器,而不是x86_64模拟器。


1
发布版本在实际设备上也会出现这个问题。 - Purvik Rana

0

我也遇到了同样的问题。实际上问题出在原生代码中。

如果你在Android Studio中打开一个your_app/android项目并运行它,你可以追踪问题。

iOS也是一样的 -> 在Xcode中打开iOS项目

所以在我修复后,应用程序按预期运行。

希望这对你有帮助。


0
如果您在IOS构建中遇到此问题,请按照以下步骤操作:

前往Runner -> editSchema -> Run -> 将构建配置更改为 Debug

如果您处于发布模式并在Android Studio上运行,则会遇到此问题。

0

我停止了正在运行的应用程序,然后再次点击运行,这对我起作用了。


0

您还需要在文件中定义您的监听端口,例如: final WebSocketChannel channel = IOWebSocketChannel.connect('wss://check.com:6043/');

这解决了我的问题。


0

就像Vitaly所说的那样...

我也在努力尝试通过Xcode构建iOS时强制出现此错误,我想在使用Android Studio构建Android时也是如此。

对于iOS,请执行flutter build ios --release,然后在Xcode中打开/运行项目

对于Android,请执行flutter build apk --release,然后在Android Studio中打开/运行项目

似乎在通过flutter进行调试时存在问题...如果我找到其他方法,我会更新这个答案,但是使用这种方法似乎很稳定。


你找到任何解决方案了吗? - hio
嗨,我认为这只是在调试时出现的问题.. 我实际上并不认为在发布模式下运行时会有问题。 - Chris

0

尝试使用Uri.parse(url);确保您在此处放置的'url'是带有端点的完整url。


0

当我使用Flutter和http包时,遇到了相同的错误。

import 'package:http/http.dart' as http;
...
http.Response response =  http.get('url')

这个没问题。但是当我尝试获取 response.statusCode 时,出现了 Error connecting 错误。

我发现我在电脑上使用了 SSR/v2Ray。我通过在 Android 模拟器扩展控制面板中设置代理来解决这个问题。


-1
如果您有自己运行的http服务器,请确保Keep-Alive timeout配置设置为>=15秒。如果您无法访问http服务器,请尝试从客户端降低HttpClient的idleTimeout到5秒。
  HttpClient()..idleTimeout = const Duration(seconds: 5);


在我的情况下,这个问题被永久解决了。

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