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

请求参数双重编码致时区无效:Europe%2FBerlin转Europe%252FBerlin请求失败

解决Open-Meteo API请求中Timezone参数重复编码问题

问题重现

使用以下参数字典和请求代码调用Open-Meteo归档API时,出现时区参数错误:

参数字典

payload = {
    'latitude': 42.406747, 
    'longitude': 12.154226, 
    'timezone': 'Europe%2FBerlin',  # 手动编码的时区值
    'time_format': 'iso8601', 
    'temperature_unit': 'celsius', 
    'wind_speed_unit': 'ms', 
    'precipitation_unit': 'mm', 
    'start_date': '2023-05-20', 
    'end_date': '2023-05-23', 
    'models': ['best_match', 'era5', 'era5_land'], 
    'hourly': ['temperature_2m', 'relativehumidity_2m', 'dewpoint_2m', 'apparent_temperature', 'pressure_msl', 'surface_pressure', 'precipitation', 'rain', 'snowfall', 'weathercode', 'cloudcover', 'cloudcover_low', 'cloudcover_mid', 'cloudcover_high', 'shortwave_radiation', 'direct_radiation', 'diffuse_radiation', 'direct_normal_irradiance', 'windspeed_10m', 'windspeed_100m', 'winddirection_10m', 'winddirection_100m', 'windgusts_10m', 'et0_fao_evapotranspiration', 'vapor_pressure_deficit', 'soil_temperature_0_to_7cm', 'soil_temperature_7_to_28cm', 'soil_temperature_28_to_100cm', 'soil_temperature_100_to_255cm', 'soil_moisture_0_to_7cm', 'soil_moisture_7_to_28cm', 'soil_moisture_28_to_100cm', 'soil_moisture_100_to_255cm']
}

请求代码

import requests  # 注:原代码存在拼写错误,应为requests而非request
api_url = "https://archive-api.open-meteo.com/v1/archive"
response = requests.get(
        url= api_url,
        params=payload
    )

错误结果

生成的请求URL中,timezone参数被二次编码为Europe%252FBerlin,服务器返回错误:

{
  "reason": "Invalid timezone",
  "error": true
}

问题原因

requests.get()方法的params参数会自动对所有参数值执行URL编码。提前手动将时区编码为Europe%2FBerlin,会导致%被再次编码为%25,最终变成服务器无法识别的Europe%252FBerlin。

解决方案

直接使用未编码的原始时区字符串,让requests库自动处理编码:

修正后的参数字典

payload = {
    'latitude': 42.406747, 
    'longitude': 12.154226, 
    'timezone': 'Europe/Berlin',  # 使用原始格式,无需手动编码
    'time_format': 'iso8601', 
    'temperature_unit': 'celsius', 
    'wind_speed_unit': 'ms', 
    'precipitation_unit': 'mm', 
    'start_date': '2023-05-20', 
    'end_date': '2023-05-23', 
    'models': ['best_match', 'era5', 'era5_land'], 
    'hourly': ['temperature_2m', 'relativehumidity_2m', 'dewpoint_2m', 'apparent_temperature', 'pressure_msl', 'surface_pressure', 'precipitation', 'rain', 'snowfall', 'weathercode', 'cloudcover', 'cloudcover_low', 'cloudcover_mid', 'cloudcover_high', 'shortwave_radiation', 'direct_radiation', 'diffuse_radiation', 'direct_normal_irradiance', 'windspeed_10m', 'windspeed_100m', 'winddirection_10m', 'winddirection_100m', 'windgusts_10m', 'et0_fao_evapotranspiration', 'vapor_pressure_deficit', 'soil_temperature_0_to_7cm', 'soil_temperature_7_to_28cm', 'soil_temperature_28_to_100cm', 'soil_temperature_100_to_255cm', 'soil_moisture_0_to_7cm', 'soil_moisture_7_to_28cm', 'soil_moisture_28_to_100cm', 'soil_moisture_100_to_255cm']
}

修正后,requests会自动将Europe/Berlin编码为Europe%2FBerlin,服务器能正确识别时区参数,请求即可正常返回数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 20:15:14