1
と呼ばれるエンドポイントがBittrex Apiのにあります。Bittrex Apiは通貨を文字列として取り、その通貨の現在の残高を返します。関数内の要求、関数を実行中に要求がエラーを返すのはなぜですか?
balance = get_balance('BTC')
要求リターンを行う場合:
{ 'メッセージ': 'INVALID_SIGNATURE'、
'結果':なし、
'成功':偽}
機能:
def get_balance(currency):
endpoint = '/account/getbalance'
params = {
'currency' : currency
}
return call_endpoint(endpoint, False, params)
call_endpoint:
def call_endpoint(endpoint, isPublic, params = None):
base_url = 'https://bittrex.com/api/v1.1'
url = (base_url + endpoint +
'?apikey=' + API_KEY +
'&nonce=' + str(time.time())).encode('utf-8')
signature = hmac.new(SECRET_KEY, url, hashlib.sha512).hexdigest()
headers = {'apisign' : signature}
r = requests.get(url, headers = headers, params=params)
return r
私は、関数の外にそれを要求した場合しかし、:
url = ('https://bittrex.com/api/v1.1/account/getbalance' +
'?apikey=' + API_KEY +
'&nonce=' + str(time.time()) +
'¤cy=BTC').encode('utf-8')
signature = hmac.new(SECRET_KEY, url, hashlib.sha512).hexdigest()
headers = {'apisign' : signature}
r = requests.get(url, headers = headers)
それが動作します。
{ 'メッセージ': ''、
'結果':{ '利用可能':
...、
'成功':真}
これらの2つのアプローチを持っています同じコードなので、Python関数やこのエラーの原因となるリクエストライブラリについては何かありますか?
違いは、関数内でparams.pleaseを削除(引数)して試してみることです。 – chakri
URLは2つのケースで異なります。 1つは通貨を含み、もう1つは通貨を含まない。それは計算された署名に影響しますが、それがこの特定のAPIのために違いを生むかどうかはわかりません。 (あなたの呼び出しが 'get_balance(" BTC ")'または同等のものであると仮定しています) – chepner
私は最初の呼び出しを表示するためにそれを編集しました。 –