调用Binance API获取多币种价格报错:symbols参数值重复
解决Binance API获取多币种价格时的-1101错误
问题出在你传递symbols参数的方式上:
当你直接把Python列表["KEYUSDT","BNBUSDT","ADAUSDT"]传给params里的symbols键时,requests库会自动把列表拆解成多个同名的URL查询参数,最终请求的URL会变成:
https://api.binance.com/api/v3/ticker/price?symbols=KEYUSDT&symbols=BNBUSDT&symbols=ADAUSDT
而Binance的/api/v3/ticker/price接口要求symbols参数必须是JSON格式的字符串,不是重复的同名参数,这就触发了-1101错误。
修正方法很简单,把列表转换成JSON字符串再传递:
import requests import json symbols = ["KEYUSDT","BNBUSDT","ADAUSDT"] url = 'https://api.binance.com/api/v3/ticker/price' # 将列表序列化为JSON格式字符串 params = {'symbols': json.dumps(symbols)} ticker = requests.get(url, params=params).json() print(ticker)
你也可以手动构造JSON字符串(比如'["KEYUSDT","BNBUSDT","ADAUSDT"]'),但用json.dumps能避免手动拼接时出现格式错误,更可靠。
内容的提问来源于stack exchange,提问作者hexelot
相关产品推荐
相关产品推荐

