使用 Charles 调试 Flutter 应用中的 Dio 网络请求

为了成功使用 Charles 抓取并调试 Flutter 应用程序通过 Dio 发起的网络请求,需遵循特定配置步骤来确保应用程序能够识别 Charles 的 SSL 证书,并正确设置代理服务器。

配置 Charles 以支持 HTTPS 请求捕获

Charles 默认会拦截 HTTP 流量;对于 HTTPS,则需要额外启用 SSL 代理功能。进入 Proxy -> SSL Proxying Settings, 添加目标域名或 IP 地址到列表中以便允许这些地址下的流量被解密查看。

安装 Charles CA 证书至 Android 或 iOS 设备

为了让移动设备信任来自 Charles 的加密连接,在手机浏览器访问 chls.pro/ssl 下载安装根证书文件。这一步骤至关重要因为只有当客户端认可该中间件签发者身份之后才会同意其介入通信过程之中。

设置 Dio 进行手动代理转发

在 Dart 中操作 HttpClient 对象时可以通过修改默认构造函数内的 findProxy 属性指定自定义规则实现对不同 URL 实施差异化的路由策略。具体来说就是告诉 dio 将所有的外部访问都重定向给本地运行着 charles 的机器处理:

dart 复制代码
import 'package:dio/dio.dart';

void main() async {
  var dio = Dio(BaseOptions(
    proxyHeaders: false,
    findProxy: (url) => "PROXY localhost:8888", // 替换成实际电脑IP和端口
  ));

  try {
    Response response = await dio.get('https://example.com/api');
    print(response.data);
  } catch (e) {
    print(e.toString());
  }
}

以上代码片段展示了如何让 dio 使用 Charles 所监听的代理服务来进行 API 调用。注意这里的 "localhost" 可能要替换为开发者 PC 的局域网 IP 地址,而不仅仅是本机回环地址,尤其是在真机测试而非模拟器环境下工作时。

相关推荐
果丁智能4 小时前
智能锁赋能网约房民宿数字化管控:身份核验+远程授权,筑牢安全防线、降本增效
网络·数据库·人工智能·安全·智能家居
wp123_15 小时前
射频前端无源器件观察:Coilcraft WBC1-1TLC vs TONEVEE WBT1-1CT 国产与进口巴伦变压器的技术博弈
网络
映翰通朱工6 小时前
工业4G网关无公网IP远程运维实战(内网终端异地访问方案)
运维·服务器·网络·安全·智能路由器
天南散修6 小时前
MT7916 BA流程
网络·驱动开发·wifi·802.11
Yang96116 小时前
多功能一体化,成都鼎讯 LDMN-JM1 满足石油煤矿设备检定与训练需求
网络·能源
IP老炮不瞎唠7 小时前
Python 价格监控如何实现?思路与实用方法分享
运维·服务器·网络
睡不醒男孩0308237 小时前
CLup 6.x 版本中针对StarRocks 存算一体集群的完整操作手册
java·服务器·网络·clup
dog2508 小时前
网络长尾延时的重尾本质
开发语言·网络·php
戴西软件8 小时前
戴西 DLM 许可授权管理系统:破解无网络环境下工业软件授权难题,助力制造企业降本增效
网络·人工智能·python·深度学习·程序人生·算法·制造
6v6-博客8 小时前
u盘出现图片、文件,文件夹全部隐藏怎么办
网络