You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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请求截图:.NET请求截图
-Flutter使用HttpClient请求截图:Flutter使用HttpClient请求截图
-Flutter使用原生http请求截图:Flutter使用原生http请求截图
-访问其他HTTP(非HTTPS)API的流量截图:访问其他HTTP(非HTTPS)API的流量截图
-IONIJA抓取的Flutter流量截图:IONIJA抓取的Flutter流量截图
-IONIJA抓取的NETCORE应用流量截图:IONIJA抓取的NETCORE应用流量截图

内容的提问来源于stack exchange,提问作者Luis Alvarado Day

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 10:15:10