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

Flutter调用本地.NET API报CERTIFICATE_VERIFY_FAILED证书验证错误

问题根因

你遇到的证书校验失败错误,核心原因是代码逻辑无效:你虽然创建了配置badCertificateCallback的自定义HttpClient,但实际调用http.get()发请求时,用的是http包默认内置的请求客户端,完全没有用到你自定义的、允许自签名证书的HttpClient,因此HTTPS握手阶段依然会校验本地.NET API的自签名证书,触发CERTIFICATE_VERIFY_FAILED报错。
另外你用的10.0.2.2是安卓模拟器访问宿主机的专用映射地址,这个配置本身没有问题。

解决方案

以下方案仅适用于本地开发调试场景,禁止在正式发布版本中使用,避免引入HTTPS中间人攻击风险。

  • 方案1:给请求绑定自定义HttpClient,单接口生效
    首先导入依赖包,然后用自定义HttpClient构造IOClient发起请求,修正后的代码如下:
import 'dart:io';
import 'package:http/http.dart' as http;
import 'package:http/io_client.dart';

static Future fetchCordinates() async
{
    HttpClient client = HttpClient();
    client.badCertificateCallback = ((X509Certificate cert, String host, int port) => true);
    // 用自定义HttpClient构造http请求客户端
    final requestClient = IOClient(client);
    var studentUrl =Uri.parse('https://10.0.2.2:44363/address-lookup?address=house%20no%20122%20');
    print(studentUrl);
    // 用自定义客户端发请求,替代原来的全局http.get
    http.Response response=await requestClient.get(studentUrl,headers: {"Accept": "application/json"});
    print(response.body);
    return response;
} 
  • 方案2:全局配置证书校验规则,所有请求生效
    如果项目里有多个接口都要访问本地自签名的API,可以在应用启动时全局覆盖Http配置,无需每个接口单独处理:
import 'dart:io';
import 'package:flutter/material.dart';

void main() {
  // 全局配置忽略自签名证书校验
  HttpOverrides.global = LocalDevHttpOverrides();
  runApp(const MyApp());
}

class LocalDevHttpOverrides extends HttpOverrides {
  @override
  HttpClient createHttpClient(SecurityContext? context) {
    return super.createHttpClient(context)
      ..badCertificateCallback = (X509Certificate cert, String host, int port) => true;
  }
}
额外注意事项
  • 如果你用iOS模拟器调试,不需要用10.0.2.2映射地址,直接将接口地址改为https://localhost:44363即可正常访问宿主机接口。
  • 如果你用真机调试,10.0.2.2和localhost都无法访问宿主机服务,需要替换为你开发电脑在当前局域网内的实际IP,同时保证手机和电脑连接同一WiFi,且.NET API已开启局域网访问权限。
  • 正式打包上线前必须删除所有证书绕过逻辑,否则会存在严重安全隐患。

内容的提问来源于stack exchange,提问作者atiq ur rahman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 11:36:20