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

Flutter Dio请求报错NO_RENEGOTIATION(ssl_lib.cc:1725) error 268435638求助

解决Flutter Dio POST请求出现NO_RENEGOTIATION(ssl_lib.cc:1725) error 268435638的问题

核心问题分析

你遇到的SSL协商错误,大概率是请求格式与Postman不一致导致的,结合代码和Postman截图,存在几个明显矛盾点:

  • 代码用FormData.fromMap()构造请求体,但手动设置了Content-Type: application/json,导致请求格式混乱;而Postman实际是用Raw JSON格式提交数据。
  • 手动指定Content-Length: 173,该值与实际请求体长度可能不匹配,触发服务器解析异常,进而引发SSL协商错误。
  • Host、Connection等属于Dio自动处理的请求头,手动设置会干扰正常请求流程。

具体修复步骤

  1. 修正请求体格式
    移除FormData.fromMap(),直接将requestData作为data参数传入,Dio会自动将其序列化为JSON并设置正确的Content-Type头。

  2. 移除不必要的请求头
    删除手动设置的Content-Length、Host、Connection,这些字段Dio会根据请求自动生成,手动设置易出错。

  3. 修改后的代码示例

final Map<String, dynamic> requestData = {
  "email": Encryption().encryptKey(email),
  "password": Encryption().encryptKey(password),
  "user_ad": userType,
  "token_fcm": _tokenFcm,
  "is_encrypted": true,
};

Response response = await _dio.post(
  "$basePath/login",
  data: requestData, // 直接传Map,Dio自动转JSON
  options: Options(
    headers: {
      "Accept": "*/*",
      "Accept-Encoding": "gzip, deflate, br",
      "Cache-Control": "no-cache",
    },
    validateStatus: (status) {
      print("INI STATUS");
      print(status);
      return (status ?? 0) < 500;
    },
    followRedirects: false,
  )
);

final data = response.data;

若仍存在SSL问题的补充方案

如果修改后还是出现SSL错误,可能是服务器证书或TLS版本兼容问题,可尝试配置Dio的SSL验证:

import 'dart:io';

// 初始化Dio时添加以下配置
_dio.httpClientAdapter = HttpClientAdapter() {
  @override
  HttpClient createHttpClient() {
    final client = HttpClient();
    // 允许所有证书(仅测试环境使用,生产环境禁用)
    client.badCertificateCallback = (cert, host, port) => true;
    // 若服务器有自定义证书,可传入证书字节
    // client.securityContext.setTrustedCertificatesBytes(证书字节数据);
    client.connectionTimeout = const Duration(seconds: 10);
    return client;
  }
};

内容的提问来源于stack exchange,提问作者Ikhsan Arfian Nugraha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 16:35:22