Flutter发送带数据的POST请求报错:Connection closed before full header was received
Flutter对接REST后端POST请求报错:Connection closed before full header was received
发送带数据的POST请求时触发以下未处理异常:
未处理异常:HttpException: Connection closed before full header was received, uri = http://79.xxx.yyy.zzz/api/Device/Login?param=U2FsdGVkX1%2BcQIyEN0rAHg%2Fo5lC7angM5weo30YxkMUU8r1yKM6ibUtc7me7rvLx
我的POST请求代码
Future<HttpClientResponse> makePost(String param, String content) async { final context = SecurityContext.defaultContext; context.allowLegacyUnsafeRenegotiation = true; final client = HttpClient(context: context); final request = await client.postUrl(Uri.parse('http://xxx.yyy.zzz.242/api/Device/Login?param='+param) ); request.headers.set(HttpHeaders.contentTypeHeader, "application/json;"); request.persistentConnection=false; request.write(content); final response = await request.close(); response.transform(utf8.decoder).listen((contents) { print(contents); }); return response; }
已尝试的解决方案
- 将AVD降级至Android Pie(API 28)
- 在物理设备而非AVD上运行应用
- 使用DIO和HttpClient两种方式发起请求,均失败
- 向其他测试后端发送带数据的POST请求可正常工作
- 参考Stack Overflow相关帖子无法解决问题
注意事项
- 发送不带数据的POST请求不会触发该错误
- 用C#编写API客户端发送相同POST请求可正常工作,说明服务器无问题
- 忽略param参数值,该参数不在讨论范围内
- 通过Wireshark抓包发现:Flutter应用会在初始TCP包中发送部分请求数据,而C# .NET应用仅在HTTP POST包中发送请求数据
- 已测试向另一个HTTP(非SSL)API发送GET请求可获取响应,说明Android设置允许HTTP流量
截图说明
-.NET请求截图:
-Flutter使用HttpClient请求截图:
-Flutter使用原生http请求截图:
-访问其他HTTP(非HTTPS)API的流量截图:
-IONIJA抓取的Flutter流量截图:
-IONIJA抓取的NETCORE应用流量截图:
内容的提问来源于stack exchange,提问作者Luis Alvarado Day
相关产品推荐
相关产品推荐

