我的电脑是安装的charles 抓包工具,其他的抓包工具,方法是一样的。
Flutter 应用的网络请求是不走手机的系统代理的,也就是说你在系统设置中设置了代理地址和端口号后 Flutter 也不会走你的代理,而抓接口是必须要设置代理的。
解决方案: 必须在代码中设置代理,同时不需要再手机上网络上设置 网络代码。同时手机的wifi 要和电脑的网络是同一个局域网的
Dart 自带的 HttpClient 或 三方库 Dio 进行网络请求
1.HttpClient
HttpClient client = HttpClient();
client.findProxy = (uri) {
// 设置是否开启代理
return AppConstant.isDebug ? "PROXY ip地址加端口号" : 'DIRECT';
};
2.Dio
Dio dio = Dio();
// 设置代理用来调试应用
(dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate = (client) {
client.findProxy = (Uri) {
// 设置是否开启代理
return AppConstant.isDebug ? 'PROXY ip地址加端口号' : 'DIRECT';
};
};
设置完之后 需要重启项目,同时上线的时候需要屏蔽代理,否则会出现严重问题,接口请求拿不到数据