当前位置: 首页 > news >正文

【Java程序代理与系统代理关系】Java程序代理与系统代理关系优先级及覆盖关系

前言

使用Apache HttpClient工具包中的HttpClients.createDefault()方法创建的默认HTTP客户端会根据操作系统当前的设置来决定是否使用代理。

具体来说,当创建默认HTTP客户端时,它会检查系统的代理设置。如果操作系统当前设置了系统级代理,那么创建的默认HTTP客户端将自动使用该系统级代理进行请求。如果操作系统没有设置代理或者设置代理为直接连接(无代理),则创建的默认HTTP客户端将不使用任何代理。

这种行为是由Apache HttpClient的默认配置决定的,其会优先考虑操作系统级别的代理设置

如何禁用操作系统代理而直连目标服务器

//新建一个完全默认的HttpClientBuilder
HttpClientBuilder hb = HttpClients.custom().setProxy(null);
//调用build方法完成http客户端的构造
CloseableHttpClient httpClient = hb.build();

如何使用自定义代理

//新建一个完全默认的HttpClientBuilder
HttpClientBuilder hb = HttpClients.custom().setProxy(new HttpHost(ip,port));
//调用build方法完成http客户端的构造
CloseableHttpClient httpClient = hb.build();

Java程序代理与系统代理关系

Q:假设操作系统的系统代理是A服务器,而我们在Java代码中通过setProxy把代理服务器设置成了B服务器,那我的Java客户端发出一个访问C服务器的GET请求,那这个GET请求途径的服务器路线是下面的哪一种?
1.直接进入C服务器;
2.先进入A代理服务器,然后直接进入C服务器(即setProxy设置的代理被系统代理所覆盖);
3.先进入B代理服务器,然后直接进入C服务器(即系统代理被setProxy设置的代理所覆盖);
4.先进入B代理服务器,再进入A代理服务器,最后进入终点C;
5.先进入A代理服务器,再进入B代理服务器,最后进入终点C;

下面是Chatgpt3.5的回答:

根据你描述的情况,操作系统的系统代理是A服务器,而你在Java代码中通过setProxy将代理服务器设置为B服务器。在这种情况下,当Java客户端发送GET请求访问C服务器时,请求的路线将是选项3:先进入B代理服务器,然后直接进入C服务器。
这是因为在Java代码中通过setProxy设置的代理会覆盖操作系统的系统代理。所以,Java客户端会首先尝试将请求发送到B代理服务器,然后由B代理服务器转发请求到C服务器,而不会经过A代理服务器。

省流:

默认情况下,Java的Http客户端使用操作系统的全局代理
如果使用setProxy修改代理,无论是修改成另一个服务器,还是修改为null,都会覆盖掉操作系统的全局代理

http://www.lryc.cn/news/296562.html

相关文章:

  • MQ,RabbitMQ,SpringAMQP的原理与实操
  • Vue 3 + Koa2 + MySQL 开发和上线部署个人网站
  • uniapp踩坑之项目:简易版不同角色显示不一样的tabbar和页面
  • 源支付V7开心1.9修复版,非网络上泛滥不能那种
  • Gitlab和Jenkins集成 实现CI (二)
  • Java:内部类、枚举、泛型以及常用API --黑马笔记
  • 【持续更新】2024牛客寒假算法基础集训营3 题解 | JorbanS
  • Java基于微信小程序的驾校报名小程序,附源码
  • Android中AGP与Gradle、AS、JDK的版本关系
  • web 前端实现一个根据域名的判断 来显示不同的logo 和不同的标题
  • 复制和粘贴文本时剥离格式的5种方法(MacWindows)
  • SpringBoot实现即时通讯
  • 【每日一题】LeetCode——反转链表
  • 精通Python爬虫:掌握日志配置
  • Python_百度贴吧评论情感分析
  • 如何运行心理学知识(心流)来指导工作和生活
  • 精简还是全能?如何在 Full 和 Lite 之间做出最佳选择!关于Configuration注解的Full模式与Lite模式(SpringBoot2)
  • springboot微信小程序uniapp学习计划与日程管理系统
  • 236.二叉树的最近公共祖先
  • ETL是什么,有哪些ETL工具?就业前景如何?
  • 无人机系统组装与调试,多旋翼无人机组装与调试技术详解,无人机飞控系统原理
  • Log360,引入全新安全与风险管理功能,助力企业积极抵御网络威胁
  • 【开源】JAVA+Vue.js实现高校实验室管理系统
  • Flink CDC 与 Kafka 集成:Snapshot 还是 Changelog?Upsert Kafka 还是 Kafka?
  • 极智一周 | 国产CPU系列汇总、鲲鹏、飞腾、平头哥 And so on
  • PgSQL技术内幕 - case when表达式实现机制
  • Android9~Android13 某些容量SD卡被格式化为内部存储时容量显示错误问题的研究与解决方案
  • 音视频色彩:RGB/YUV
  • MySQL之密码策略和用户授权
  • 电脑通电自启动设置