dart - Flutter App iOS模拟器设置透明代理

标签 dart ios-simulator flutter

我需要通过本地代理 localhost:3128 运行从我的 Flutter 应用程序发出的每个网络请求。该代理在我的系统中全局设置,并且 iOS 模拟器选择设置(即在模拟器上使用 Safari 工作正常)。如果我像这样显式指定我的代理,我的 Flutter 应用程序的网络连接工作正常:

HttpClient client = HttpClient();
client.findProxy = (uri) {
  return "PROXY localhost:3128;";
};
....

但是,我自然不能使用基于 HttpClient 构建的抽象,并且不会公开手动设置代理的方法,例如 NetworkImage .

有没有办法为我的开发目的在应用程序中使用的所有 HttpClient 全局设置代理?或者,在 iOS 模拟器中设置适当的环境变量的最佳方法是什么 findProxyFromEnvironment选出正确的一个吗?最后,有没有办法让Proxy在iOS模拟器中透明?

最佳答案

您可以使用 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());
}

关于dart - Flutter App iOS模拟器设置透明代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50949938/

相关文章:

ios - iPhone模拟器无法打开(localhost)http://127.0.0.1:8000/foo/bar/

flutter - 具有页面 View 的BottomNavigationBar不会动画化到索引页面

json - Flutter:如何下载Json文件到本地然后访问

flutter - 是否可以每x秒在振颤时重新调用一个函数?

flutter - 无法删除Flutter Cloudfirestore中的文件?

list - 获取列表中的项目数

ios - iOS模拟器中如何关闭灰色部分自动补全?

iPhone模拟器无法启动?

dart - 如何在 StatefulWidget 上使用构建器函数

flutter - 如何在 flutter 中对齐定位小部件内的文本?