【发布时间】:2019-12-21 09:26:25
【问题描述】:
我的爱好是通过 API 买卖比特币,我已经成功地使用 python 通过使用 lua 也存在的“请求”库来做到这一点。我正在使用 bitstamp API。但是,我的 lua 代码不起作用。
这是适用于 python 的代码
import time
import hashlib
import hmac
import requests
import ast
import pprint
nonce = str(int(time.time()))
customer_id = 'some id'
api_key = 'some string'
API_SECRET = 'some other string'
message = nonce + customer_id + api_key
signature = hmac.new(API_SECRET, msg=message, digestmod=hashlib.sha256).hexdigest().upper()
# --------------Requests Parameters------------------------
params = {"key": api_key, "signature": signature, 'nonce': nonce}
# --------------Get Account Balance--------------------------
r = requests.post('https://www.bitstamp.net/api/v2/balance/', data=params)
print(r.text)
现在这段代码有效,我得到了成功的响应。
但是我的 lua 代码不起作用,因为我从 API 收到错误,所以这显然不是语法错误。这是lua代码。
requests= require("requests")
openssl = require("openssl")
nonce = tostring(os.time())
customer_id = 'some id'
api_key = 'some string'
API_SECRET = 'some other string'
message = nonce..customer_id..api_key
signature = openssl.hmac.digest('sha256',message,API_SECRET)
signature = string.upper(signature)
print(signature)
params = {['key'] = api_key, ['signature'] = signature, ['nonce'] = nonce}
r = requests.post{"https://www.bitstamp.net/api/v2/balance/", data = params}
print(r.text)
print(r.status_code)
我从此代码从服务器得到的响应是:
{"status": "error", "reason": "Missing key, signature and nonce parameters", "code": "API0000"} 403
值 API0000 是来自 api(https://www.bitstamp.net/api/) 的错误代码,表示“参数未在 API 请求中发布”
我只是不知道我在这里做错了什么。
【问题讨论】:
-
您可以将数据发送到httpbin.org/post,它会发回您请求中的所有标头、cookie、数据,以便您可以比较python和lua的结果
-
感谢弗拉斯。会调查的。