flutter dio 网络框架默认情况下是不能实现抓包操作的 需要设置一段代码,才能用charles 实现数据抓包。
charles下载地址:https://www.charlesproxy.com/
永久注册地址:https://www.zzzmode.com/mytools/charles/
charles 设置:


pc和平板链接同一网络,然后在平板上的wifi的代理中设置 pc的ip 和 8888 代理端口。
重要代码来了,需要在dio的框架中设置
import 'package:dio/adapter.dart';///DefaultHttpClientAdapter 依赖的包
///代码片段
dio = Dio(
BaseOptions(
//baseUrl: "",
connectTimeout: CONNECT_TIMEOUT,
receiveTimeout: RECEIVE_TIMEOUT,
contentType: "application/json",
headers: getHeader())
);
/// 在调试模式下需要抓包调试,所以我们使用代理,并禁用HTTPS证书校验
(dio?.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate = (client) {
client.findProxy = (uri) {
return "PROXY 192.168.0.101:8888"; //pc的代理ip和端口
};
///代理工具会提供一个抓包的自签名证书,会通不过证书校验,所以我们禁用证书校验
client.badCertificateCallback =
(X509Certificate cert, String host, int port) => true;
};
ok 这样 charles 就可以抓到 flutter app 的数据请求包了。