Flutter 网络请求charles抓不到包的问题
2020-05-22 本文已影响0人
张_何
问题
- 经过多方验证,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();
};