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

Python执行带HTTP Basic认证的API请求时遇连接错误求助

解决Python请求IGN GCMS API时的连接超时错误(WinError 10060)

你遇到的WinError 10060是典型的网络连接超时/主机无响应问题,以下是具体排查和解决步骤:

1. 先确认API地址的可达性

直接用浏览器访问目标URL(带上参数?departement=65),或者用curl命令测试:

curl -u 你的用户名:你的密码 https://espacecollaboratif.ign.fr/gcms/api/reports?departement=65

如果浏览器/curl也无法访问,说明问题出在网络环境或API地址本身(比如地址写错、服务器维护、IP被拦截)。

2. 检查网络限制

  • 代理问题:如果是公司内网环境,大概率需要配置代理。在requests中添加代理参数:
    proxies = {
        'https': 'http://你的代理地址:端口'
    }
    # 在请求中加入proxies参数
    req = requests.get(url, auth=(username, password), params={"departement": "65"}, proxies=proxies)
    
  • 防火墙/杀毒软件拦截:临时关闭本地防火墙或杀毒软件,测试是否能正常连接。

3. 修正请求参数格式

原代码中params传的是字符串"departement=65",虽然requests兼容,但更规范的方式是传字典,避免潜在的格式解析问题:

params={"departement": "65"}

4. 增加超时与异常处理

给请求添加timeout参数避免无限等待,同时用try-except捕获异常,便于排查:

import requests

username = 'XXXX'
password = 'XXXX'
url = 'https://espacecollaboratif.ign.fr/gcms/api/reports'

try:
    req = requests.get(
        url,
        auth=(username, password),  # 简化写法,和HTTPBasicAuth效果一致
        params={"departement": "65"},
        timeout=10  # 10秒超时
    )
    req.raise_for_status()  # 主动抛出HTTP错误(比如401、404)
    contenu = req.json()
    print(contenu)
except requests.exceptions.RequestException as e:
    print(f"请求失败: {str(e)}")

5. 验证认证方式

虽然文档说明是HTTP Basic认证,但可以确认:

  • 用户名和密码是否正确(注意大小写、特殊字符)
  • 是否需要额外的请求头(比如User-Agent模拟浏览器):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
    }
    req = requests.get(url, auth=(username, password), params={"departement": "65"}, headers=headers)
    

6. 检查API服务状态

如果以上都没问题,可能是对方服务器临时故障,等待一段时间后再测试,或者查看官方的服务通知。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 16:52:43