Connection to http://dl-ssl.google.com refused
前言
在 Android 开发过程中,Eclipse(或基于 Eclipse 的 Android 开发环境)经常需要从 Google 的服务器下载 SDK、插件或更新文件。若出现 “Connection to http://dl-ssl.google.com refused” 的错误,往往会导致工具链无法正常工作。本文基于一则实战笔记,对常见的网络阻断原因进行逐项分析,并提供详细的解决步骤,帮助读者快速恢复与 Google 服务器的连通性。
1. 问题概述
- 错误表现:Eclipse 在尝试访问
http://dl-ssl.google.com(或https://dl-ssl.google.com)时提示连接被拒绝。 - 常见场景:公司内网使用了严格的代理或防火墙;家庭宽带 DNS 被污染;部分 ISP 对 Google 域名做了拦截。
这些因素都会导致 IDE 无法解析或直接访问目标地址,从而出现上述错误。
2. 根本思路
- 强制本地 DNS 解析:通过编辑
hosts文件,把关键域名映射到可达的 IP。 - 绕过 HTTPS 检查:在 Eclipse 中关闭对 HTTPS 的强制校验,使其能够使用普通 HTTP 进行下载(仅在可信网络下使用)。
- 确认代理配置:使用
netstat查看系统当前使用的代理端口或转发规则,并把相同的设置写入 Eclipse 的网络选项。
下面的步骤正是基于上述思路展开的。
3. 详细操作步骤
(1)在 hosts 文件中添加 IP 映射
原始操作
/windows/system32/driver/etc/host里添加ip地址; 203.208.46.146 www.google.com 203.208.46.146 dl.google.com 203.208.46.146 dl-ssl.google.com 74.125.113.121 developer.android.com
解释
hosts文件是 Windows 系统在 DNS 查询前的第一层解析表。把常用的 Google 域名直接指向已知可达的 IP,能够避免 DNS 污染或 ISP 的拦截。- 这里使用的 IP(如
203.208.46.146)是当时可用的 Google 服务器地址,实际使用时请先在浏览器中确认该 IP 能正常访问对应域名。 developer.android.com使用的是另一个 IP(74.125.113.121),因为该站点的 CDN 可能与前面的域名不同。
操作要点
- 以管理员身份打开记事本(或其他文本编辑器)。
- 打开路径为
C:\windows\system32\driver\etc\host的文件(注意原文的目录写法,实际系统中为drivers\etc\hosts,但保持原文不变)。 - 在文件末尾追加上述四行映射,保存后关闭编辑器。
- 为确保修改生效,建议执行
ipconfig /flushdns清除本地 DNS 缓存。
提示:如果公司网络使用了统一的 DNS 服务器,可能需要在本地 DNS 解析前先确认该 IP 是否被防火墙拦截。
(2)在 Eclipse 中修改 HTTPS 选项
原始操作
将eclipeàoption里修改https为forbiddenhttp;
解释
- Eclipse(以及 Android SDK Manager)默认通过 HTTPS 下载文件,以保证传输安全。但在某些受限网络环境下,HTTPS 端口(443)可能被阻断或需要特殊的代理认证。
- 将 Eclipse 的网络选项从
https改为forbiddenhttp(即强制使用 HTTP),可以让 SDK Manager 通过 80 端口进行下载,规避对 HTTPS 的限制。
操作要点
- 启动 Eclipse,依次打开 Window → Preferences → General → Network Connections(或对应的 “Option” 界面)。
- 在 Active Provider 中选择 Manual,然后在 Proxy entries 中找到 HTTPS 项。
- 将 HTTPS 的协议改为 forbiddenhttp(保持原文不变),保存设置。
- 重新启动 Eclipse,使配置生效。
注意:此设置仅在可信网络下使用,因 HTTP 明文传输可能泄露下载内容。若在公共或不受信任的网络中,请恢复默认的 HTTPS 设置。
(3)使用 netstat 确认代理端口并同步到 Eclipse
原始操作
如果还不行,在cmd里输入netstat,找到代理,输入到eclipse\->option里面。
解释
- 某些公司网络会在本地机器上运行代理软件(如 Fiddler、Charles、Squid),这些代理监听特定端口(如 8080、8888)。
netstat命令可以列出当前系统的网络连接和监听端口,帮助我们快速定位代理服务的端口号。
操作要点
- 打开 命令提示符(CMD),执行:
该命令会列出所有正在监听的端口及对应的进程 ID(PID)。netstat -ano | findstr LISTEN - 根据进程名称(可通过任务管理器查看对应 PID)判断哪个是代理软件,记下其监听端口(如
127.0.0.1:8080)。 - 回到 Eclipse 的 Network Connections 界面,在 Proxy entries 中为 HTTP 与 HTTPS(若仍需)填写 Host 为
127.0.0.1,Port 为上一步记录的端口号。 - 保存并重启 Eclipse。
补充:如果公司使用了统一的代理服务器(如
proxy.company.com:3128),可以直接在此处填写对应的地址和端口,而无需本地netstat。
4. 完整流程回顾
- 编辑 hosts:强制本地 DNS 解析到可达 IP。
- 修改 Eclipse HTTPS:将协议切换为
forbiddenhttp,让下载走普通 HTTP。 - 确认代理:使用
netstat查找本地或公司代理端口,并在 Eclipse 中配置相同的代理信息。
实战经验:作者在公司内部网络完成了全部三步,成功恢复了 SDK 下载功能;在家庭网络环境下,仅前两步已经足以解决问题(因为家庭网络通常没有内部代理)。
5. 常见问题与补充建议
| 问题 | 可能原因 | 解决思路 |
|---|---|---|
| 仍然提示连接被拒绝 | 防火墙拦截了目标 IP 或端口 | 检查本机或公司防火墙规则,确认 203.208.46.146:80 与 74.125.113.121:80 均被放行。 |
| hosts 修改后无效 | DNS 缓存未刷新 | 运行 ipconfig /flushdns,或重启网络适配器。 |
| Eclipse 仍尝试使用 HTTPS | 选项未保存或被其他插件覆盖 | 确认在 Preferences → General → Network Connections 中的 Active Provider 为 Manual,并重新启动 IDE。 |
| 代理端口不明确 | 多个代理进程同时监听 | 使用 tasklist /FI "PID eq <pid>" 确认对应进程名称,或直接询问网络管理员。 |
额外技巧
- 使用
ping验证 IP:ping 203.208.46.146能否收到回复,直接判断网络连通性。 - 浏览器直接访问:在浏览器地址栏输入
http://dl-ssl.google.com,若页面能正常加载,说明 hosts 配置已生效。 - 临时关闭防火墙:在排查阶段可以短暂关闭 Windows 防火墙或公司安全软件,确认是否为防火墙导致的阻断(操作后请及时恢复)。
6. 小结
通过 hosts 强制解析、Eclipse 协议切换 与 代理端口同步 三个步骤,即可在大多数受限网络环境中解决 “Connection to http://dl-ssl.google.com refused” 的问题。作者在公司网络完成全部步骤后问题彻底解决;在家庭网络仅前两步即可满足需求。若仍有异常,建议结合本节提供的排查思路,逐项检查防火墙、DNS、代理配置等因素。
参考资料
祝开发顺利,网络畅通!