调用Encoura API遇TypeError: 'list' object is not callable,求正确语法
解决TypeError: 'list' object is not callable 并正确调用Encoura API获取导出文件列表
错误原因
你犯了两个关键参数传递错误:
requests.get的auth参数用于HTTP基础认证(接收元组如(username, password)),但你把headers包装成列表传给了它,完全不符合参数要求。params参数需要直接传入字典类型的查询参数,你却用列表包裹了get_exports字典,导致内部处理时触发类型错误。
另外,你的请求头已经包含了Authorization、x-API-key等认证信息,不需要再通过auth参数传递。
修正后的完整代码
import requests # 配置认证头 headers = { "x-API-key": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "Authorization": "X", "Organization": "X" } # 定义查询参数 get_exports_params = { "status": "NotDelivered", "productKey": "score-reporter" } # 发起GET请求 try: response = requests.get( "https://api-datalab.encoura.org/v1/datacenter/exports", headers=headers, params=get_exports_params ) # 自动捕获HTTP错误(如401、404等) response.raise_for_status() except requests.exceptions.RequestException as e: print(f"请求出错: {e}") else: # 打印请求结果的几种方式 print("响应状态码:", response.status_code) # 优先尝试解析JSON格式结果 try: result_json = response.json() print("响应JSON结果:") print(result_json) except ValueError: # 非JSON格式则打印原始文本 print("响应文本结果:") print(response.text)
关键说明
headers参数直接传入认证头字典,无需额外包装。params参数直接传入查询参数字典,requests会自动拼接成URL查询字符串。- 根据API返回格式选择打印方式:如果是JSON结构用
response.json()解析,否则打印原始文本response.text。
内容的提问来源于stack exchange,提问作者sdgibbs
相关产品推荐
相关产品推荐

