币安<Api-key格式无效.>与Python请求,但与curl一起工作



我正试图使用python请求在Binance测试网上下单。它总是抛出{"code":-2014,"msg":"API-key format invalid."}。但当与curl一起使用时,相同的url会成功返回数据。有人能指出我的python请求代码出了什么问题吗?

API_KEY= <api_key>
SECRET= <password>
import time
import requests
import hashlib
import hmac
def hashing(query_string):
return hmac.new(SECRET.encode('utf-8'), 
query_string.encode('utf-8'), 
hashlib.sha256).hexdigest()
base_url = "https://testnet.binance.vision"
api_path = "/api/v3/order"
timestamp = int(time.time()*1000)
msg = "symbol=BNBUSDT&side=BUY&type=LIMIT&quantity=1&timeInForce=GTC&price=200&timestamp={}".format(timestamp)
msg_hash = hashing(msg)
url = f"{base_url}{api_path}?{msg}&signature={msg_hash}"
print(url)
headers = {'Content-Type': 'application/json;charset=utf-8',
'X-MBX-APIKEY': API_KEY}
print("nusing python-requests")
with requests.Session() as session:
session.headers.update(headers)
resp = session.put(url)
print(resp)

print("nusing curl")
!curl -H "X-MBX-APIKEY: {API_KEY}" -X POST "{url}"

colab链接:https://colab.research.google.com/drive/1qPuDK_mGBchpoD4cVbq6oKvt_WY4nX71?usp=sharing

所以有一些事情。

  1. 在您的curl中,您拥有的唯一标头是X-MBX-APIKEY,而不是内容类型。因此,我会尝试相应地改变这一点。

  2. 同样在curl中,您正在执行POST请求,而不是PUT。我也会改变的。

  3. 我不确定卷曲的编码是否有什么不同。我会以不同的方式传递url参数,并让请求处理它

因此,

params = {
'symbol': 'BNBUSDT',
'side': 'BUY',
'type': 'LIMIT',
'quantity': '1',
'timeInForce': 'GTC',
'price': '200',
'timestamp': timestamp,
'signature': msg_hash
}
headers = {
'X-MBX-APIKEY': API_KEY
}
r = requests.post(base_url+api_path, params=params, headers=headers)

这是假设你的卷发工作正常。我从你的阴道里看到卷曲是错误的。通常还需要通过POST传递data关键字参数,我会参考二进制api文档。

注意,要恢复请求的url,可以使用print(r.url),即https://testnet.binance.vision/api/v3/order?symbol=BNBUSDT&side=BUY&type=LIMIT&quantity=1&timeInForce=GTC&price=200&timestamp=X&signature=XX

相关内容

最新更新