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 的数据请求包了。