HttpClient 默认不使用代理【Dart 】
前言
最近使用 flutter 构建 App,涉及到网络请求部分,使用了 dart 自带的 HttpClient 库发现了一个有趣的问题,dart 默认情况下不使用代理,即使电脑开着代理。
解决方案
HttpClient 有个 findProxy 方法,复写这个方法就是设置代理,因此只需要在请求之前设置代理就可以了。
findProxy
1 | HttpClient client = HttpClient(); |
但是显然在开发过程中我们并不清楚代理具体的 ip 和端口,所以为了提高可用性,需要一个方法帮助我们发现系统代理。
发现系统代理
flutter 有现成的三方 package-system_proxy 可以帮助获取代理。
安装 system-proxy
在 pubspec.yaml 中添加依赖
1 | system_proxy: ^0.0.1 |
使用
1 | Map<String, String> proxy = await SystemProxy.getProxySettings(); |
优化代码
成功安装完需要的 package 之后,优化一下代码,使得在请求之前使用系统代理。
1 | extension HttpClientExtension on HttpClient { |