Flutter debug 模式下https网络抓包

本文使用的是dio网络框架

使用Fiddler或者Charles设置代理抓包。

static void initHttp() {
if (dio == null) {
dio = Dio();
}
bool inProduction = bool.fromEnvironment(“dart.vm.product”);
if (inProduction) {
return;
}
(dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate = (client) {
client.findProxy = (uri) {
return “PROXY 192.168.1.100:8888”;
};
client.badCertificateCallback =
(X509Certificate cert, String host, int port) {
return true;
};
};
}

java.net.UnknownServiceException

Android 9.0系统上使用okHttp网络库连接请求报错:

onError:
java.net.UnknownServiceException: CLEARTEXT communication to api.06peng.com not permitted by network security policy

原因是由于 Android P(版本27以上) 限制了明文流量的网络请求,非加密的流量请求都会被系统禁止掉。
解决办法是使用https代替http。

在测试环境上可以使用临时方法解决:

1、在 res 下新建一个 xml 目录,然后创建一个名为:network_security_config.xml 文件 ,该文件内容如下:

<?xml version=”1.0″ encoding=”utf-8″?>
<network-security-config>
<base-config cleartextTrafficPermitted=”true” />
</network-security-config>

2、 在 AndroidManifest.xml application标签里增加配置android:networkSecurityConfig=”@xml/network_security_config”