【发布时间】:2021-04-16 14:27:44
【问题描述】:
我正在尝试使用 Gemini 交易 API。我给自己颁发了一个 API 密钥和一个秘密,在配置了我的环境之后,我在通过 pip 设置和安装请求时遇到了很多问题,我使用他们的示例代码创建了一个简单的脚本来读取我最近的交易。这是脚本,减去我的 API 密钥:
#!/usr/bin/env/ python
import requests
import json
import base64
import hmac
import hashlib
import datetime, time
url = "https://api.sandbox.gemini.com"
gemini_api_key = "master-xxx"
gemini_api_secret = "xxx".encode()
t = datetime.datetime.now()
payload_nonce = str(int(time.mktime(t.timetuple())*1000))
payload = {"request": "/v1/mytrades", "nonce": payload_nonce}
encoded_payload = json.dumps(payload).encode()
b64 = base64.b64encode(encoded_payload)
signature = hmac.new(gemini_api_secret, b64, hashlib.sha384).hexdigest()
request_headers = {
'Content-Type': "text/plain",
'Content-Length': "0",
'X-GEMINI-APIKEY': gemini_api_key,
'X-GEMINI-PAYLOAD': b64,
'X-GEMINI-SIGNATURE': signature,
'Cache-Control': "no-cache"
}
response = requests.post(url, headers=request_headers)
my_trades = response.json()
print(my_trades)
现在,起初它会运行,但给我一个错误,说我没有指定一个帐户。然后,根本没有改变任何东西,它突然完全停止工作。因此,虽然我在访问 API 时仍然遇到某种问题,但我什至无法再找到错误来尝试找出原因。现在我得到的是一个 JSON 解码错误,如下所示:
Traceback (most recent call last):
File "c:\Users\david\Desktop\Code Projects\GeminiTrader\GeminiTrader-v0.1.py",
line 33, in <module>
my_trades = response.json()
File "C:\Users\david\AppData\Local\Programs\Python\Python39\lib\site-packages\requests-2.25.1-py3.9.egg\requests\models.py", line 900, in json
return complexjson.loads(self.text, **kwargs)
File "C:\Users\david\AppData\Local\Programs\Python\Python39\lib\json\__init__.py", line 346, in loads
return _default_decoder.decode(s)
File "C:\Users\david\AppData\Local\Programs\Python\Python39\lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Users\david\AppData\Local\Programs\Python\Python39\lib\json\decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
是什么导致了这个 json 解码问题?为什么之前没有出现,当 API 由于帐户参数错误而拒绝我的请求时?为什么没有我修改代码中的任何内容就突然变成了这个错误?我该如何解决?我一直在安装请求并使其正常工作时遇到问题,也许我在这个过程中搞砸了?
当然,在修复此问题后,我将要修复许多新问题,因为有关此 API 的文档非常糟糕。任何帮助推进这个项目将不胜感激!谢谢!
【问题讨论】:
-
响应中没有 JSON。检查 HTTP 状态码!
-
我在输出中看不到 http 状态代码。在哪里查看 http 状态码?
-
我看到它不是 200,因此我有一个错误的请求。奇怪,因为我在他们的 api 文档中复制了确切的请求。
-
谢谢克劳斯,它正在发送一个错误代码,在您的帮助和其他答案的帮助下,我能够缩小范围并修复它!
标签: python json python-3.x rest bitcoin