我需要通过本地代理localhost:3128
运行从Flutter应用程序发出的每个网络请求。此代理在我的系统中全局设置,iOS模拟器获取设置(即,在模拟器上使用Safari工作良好)。如果我像这样明确地指定我的代理,我的Flutter应用程序的网络连接就可以正常工作:
HttpClient client = HttpClient();
client.findProxy = (uri) {
return "PROXY localhost:3128;";
};
....
但是,我自然不能使用构建在HttpClient
上的抽象,也不能公开手动设置代理的方法,比如NetworkImage。
为了我的开发目的,有没有办法为应用程序中使用的所有HttpClient全局设置代理?或者,在iOS模拟器中设置适当的环境变量以便findProxyFromEnvironment选择正确的环境变量的最佳方法是什么?最后,有没有办法在iOS模拟器中使代理透明?
发布于 2019-05-23 07:02:57
您可以使用HttpOverrides.global拥有单个拦截器,该拦截器可用于在实例化时创建HTTP客户端。
class MyHttpOverrides extends HttpOverrides {
@override
HttpClient createHttpClient(SecurityContext context) {
return super.createHttpClient(context)
..findProxy = (uri) {
return "PROXY localhost:3128;";
}
..badCertificateCallback =
(X509Certificate cert, String host, int port) => true;
}
}
void main() {
HttpOverrides.global = new MyHttpOverrides();
runApp(MyApp());
}
https://stackoverflow.com/questions/50949938
复制相似问题