You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OkHttp是否遵循代理与非代理系统配置?

OkHttp对JVM代理系统属性的支持说明

首先明确:OkHttp 默认会读取并遵循JVM的代理系统属性(包括-Dhttps.proxyHost、-Dhttps.proxyPort、-Dhttps.nonProxyHosts),但有几个细节可能导致你遇到的问题:

一、nonProxyHosts不生效的常见原因

  • 格式错误:nonProxyHosts需用竖线|分隔主机名,支持通配符*,但不能包含空格。例如正确写法为*.internal.com|localhost,带空格的*.internal.com | localhost会导致匹配失败。
  • 大小写不匹配:OkHttp的主机名匹配逻辑严格按字符串处理,建议nonProxyHosts配置和请求的主机名大小写保持一致。
  • IP与域名不对应:若请求使用IP地址而非域名,nonProxyHosts里的域名配置无法匹配,需直接填写IP或带通配符的IP段(如192.168.*.*)。

二、java.net.ProtocolException: unexpected end of stream报错分析

这个错误通常和代理配置本身无关,是请求过程中连接异常中断导致的,常见场景:

  • 代理服务器提前关闭连接:代理对非代理主机的请求处理逻辑异常,或代理本身有超时限制,导致连接提前断开。
  • 请求/响应数据不完整:请求头或请求体的长度声明与实际发送内容不匹配,触发协议校验错误。
  • SSL/TLS握手异常:绕过代理直接连接目标主机时,若目标主机的SSL证书配置不兼容(如证书过期、不被信任),会导致连接中断。

三、验证与调试建议

  • 启用OkHttp日志:添加HttpLoggingInterceptor打印完整请求流程,确认请求是否走代理、nonProxyHosts匹配是否生效。
  • 环境验证:用curl或wget携带相同JVM代理参数请求目标非代理主机,排查网络层面是否存在问题。
  • 检查代码优先级:若依赖库手动设置了OkHttp的Proxy对象,会覆盖系统属性配置,需确认库代码是否有硬编码代理逻辑。

内容的提问来源于stack exchange,提问作者Xendar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 13:07:09