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

调用Fixer.io汇率API仅获200响应码,如何获取实际汇率数据?

Fixer API返回200响应但无汇率数据的问题解决

问题分析

你调用Fixer API获取INR兑USD汇率时,虽然拿到了200的成功响应码,但只打印出<Response [200]>,看不到预期的汇率数据。我看了你的代码,主要有几个关键问题:

  • URL参数包含多余空格:请求URL里access_key = YOUR_ACCESS_KEY、base = INR这类参数间的空格会导致API无法正确解析参数,相当于传递了错误的参数名,自然拿不到有效数据。
  • 直接打印Response对象:你打印的是requests库的Response实例,而非API返回的实际JSON内容,所以只会看到响应状态标识,看不到具体汇率数据。
  • 协议使用错误:你用了http协议,但Fixer官方API地址是https,虽然部分环境下http能跳转,但建议遵循官方规范避免潜在问题。

修正后的代码

下面是修复后的完整代码,我会逐一说明改动点:

import requests

def main():
    # 修复URL:移除参数间的空格,改用官方https协议
    api_url = "https://data.fixer.io/api/latest?access_key=YOUR_ACCESS_KEY&base=INR&symbols=USD"
    response = requests.get(api_url)
    
    if response.status_code != 200:
        raise Exception("Error: API请求失败,状态码异常")
    
    # 解析API返回的JSON数据,转换成Python字典
    response_data = response.json()
    
    # 额外检查API返回的success字段:即使200,也可能因密钥无效/权限不足返回失败
    if not response_data.get("success"):
        error_details = response_data.get("error", {})
        raise Exception(f"API执行失败:{error_details.get('info', '未知错误')}")
    
    # 现在可以看到完整的汇率数据了
    print(response_data)

if __name__ == "__main__":
    main()

关键改动说明

  1. 清理URL参数:去掉参数名和值之间的空格,比如把access_key = YOUR_ACCESS_KEY改成access_key=YOUR_ACCESS_KEY,确保API能正确识别请求参数。
  2. 解析JSON响应:用response.json()把API返回的JSON字符串转为Python字典,这样就能访问里面的rates、base等核心字段。
  3. 增加success字段校验:很多API即使返回200,也会通过success字段标记请求是否真正成功(比如密钥无效、无权限修改base货币),加这个判断能帮你快速定位权限类问题。
  4. 替换为https协议:遵循官方文档的地址规范,避免协议不兼容导致的潜在问题。

额外提醒

如果使用的是Fixer免费版,注意免费套餐默认不允许修改base参数(默认base是EUR)。这时候你可以调整请求逻辑:先获取INR兑EUR的汇率,再获取USD兑EUR的汇率,手动计算INR兑USD的比值;或者升级到付费套餐解锁自定义base货币的权限。

内容的提问来源于stack exchange,提问作者R.K.Guleria

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:50:21