Flutter请求报错HttpException

这是一个关于http请求返回的错误,当我使用http连接路由器控制台时出现的错误。

HttpException: Invalid response, unexpected 10 in reason phrase

Dart issues: https://github.com/dart-lang/sdk/issues/43916
StackOverflow:https://stackoverflow.com/questions/65492431/express-js-changing-line-break-type-to-crlf

大意是说Flutter的底层http请求后解析返回响应时使用的是 \r 结尾,当遇到以 \n结尾的就会出现此错误(应该时严格http协议与宽泛协议的问题)。

凡是依赖于官方http的库都会有这个问题,比如:Dio、http 等。

解决方法:

  1. 修改服务器响应格式,满足 http 解析。(我的服务器是路由器无法修改,不符合😓)
  2. 自己修改底层重新编译(这个我不会😓)
    官方源代码:https://github.com/dart-lang/sdk/blob/master/sdk/lib/_http/http_parser.dart#L607-L617
  3. 使用不依赖于官方http库的其他库
    这个我花了半天的时间寻找和测试发现 sync_http 这个包是可用的🎉

sync_http虽然是同步请求实现的,但是在我的项目中是可用的。

地址👉 https://pub.dev/packages/sync_http

HttpException: Invalid response, unexpected 10 in reason phrase

Unhandled Exception: Invalid response, unexpected 10 in reason phrase

Author: thinkwei

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注