Flutter 网络请求charles抓不到包的问题

问题

  • 经过多方验证,charles抓不到flutter发出的网络请求,不论是在真机上还是在模拟器上,都不可以。同样是真机或者模拟器,别的app的网络请求可以被charles抓到,唯独flutter的网络请求charles抓不到,抓捕抓狂,完全不知道哪里出了问题,郁不郁闷,关机重启,重装charles,重装app都解决不了问题,急不急人。这些我都经历过!!!!!!!
  • 最后查看dio文档才发现 flutter 发出的网络请求如果想被抓包,需要进行设置,方案如下:

解决

  • 设置http代理:DefaultHttpClientAdapter 提供了一个onHttpClientCreate 回调来设置底层 HttpClient的代理,我们想使用代理,可以参考下面代码:
import 'package:dio/dio.dart';
import 'package:dio/adapter.dart';
...
(dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate = (client) {
    // config the http client
    client.findProxy = (uri) {
        //proxy all request to localhost:8888
        return "PROXY localhost:8888"; //这里将localhost设置为自己电脑的IP,其他不变,注意上线的时候一定记得把代理去掉
    };
    // you can also create a HttpClient to dio
    // return HttpClient();
};

你可能感兴趣的:(Flutter 网络请求charles抓不到包的问题)