Mobile Proxy 导致的问题

问题

在最近的一次调试过程中,发现网络良好的状况下,Flutter 页面网络请求出现快速失败的问题。而比较奇怪的是,如果使用配置好的代理(proxy)后,网络错误却消失了。

解决过程

最直接的想法是看 HttpClient 中报错的异常信息到底是什么,在重现的设备上观察到,在进行 GET 请求时它报出了类似 " Invalid proxy :0 " 的错误消息。此时问题似乎比较明朗了 ,某种条件下读取的设备proxy出现了无效值:host值变为" ",端口port值变为了 0 。

同时问题可以在部分手机上重现了:设备上正确配置好proxy之后,随即停用proxy;此时新创建的HttpClient使用了native端System.getProperty("http.proxyHost")System.getProperty("http.proxyPort") 读取到的 " :0" 配置了proxy,进而导致后续请求出现网络错误 ❎。

小结

  • 需要严格检测读取系统proxy信息的有效性,强化以及定义好 Flutter / Native channel API;
  • 一般情况下只在开发阶段启用Proxy,不干扰生产环境代码逻辑。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,010评论 19 139
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,376评论 11 349
  • 欢迎关注公众号“Tim在路上” 1.听说你对JVM有点研究,讲一讲JVM的内存模型吧(我说虚拟机栈,本地方法栈,程...
    Tim在路上阅读 3,615评论 4 91
  • //gradle 下载慢 //可以直接下载gradle之后放在对应的目录里//或者修改 根目录下的文件bul...
    zeromemcpy阅读 895评论 0 0
  • 渐变的面目拼图要我怎么拼? 我是疲乏了还是投降了? 不是不允许自己坠落, 我没有滴水不进的保护膜。 就是害怕变得面...
    闷热当乘凉阅读 4,349评论 0 13