Python KeyError | API响应

时间:2017-07-19 17:26:46

标签: python json api response keyerror

我为我正在使用的API创建了一个包装器。完整的包装器在这里:https://pastebin.com/nL089zwF

我正在使用以下代码运行呼叫:

$('.expand').css()

回复如下:

balanceBTC = api.GetBalance('BTC')
for i in balanceBTC['data']:
    if i['symbol'] == 'btc':
        print i['available']

Trace将代码的第50行标识为问题:

AttributeError: 'dict' object has no attribute 'respond'

所以我删除了.respond并留下了一个新错误:

return response.respond["false","False"].respond["true","True"].respond['":null','":None' ]

我知道答案是一个字典而且它没有钥匙而且导致错误的是什么(我认为?)但我是一个初学者,因为我去了,我不知道在代码本身上要更改/添加/删除的内容。

我很欣赏如何做的指导!谢谢。

以下是负责获取响应的API包装器的完整部分:

return response["false","False"], ["true","True"], ['":null','":None' ]
KeyError: ('false', 'False')

1 个答案:

答案 0 :(得分:0)

晚编辑: 错误解决了,它得到了错误的密钥('数据',而不是'数据')

无论如何都是正确的版本(使用的版本)。

def api_query(self, method, values, req = None ):
if not req:
    req = {}
time.sleep(1)
if method in self.public:
    url = 'https://www.cryptopia.co.nz/api/'
elif method in self.private:
     url = 'https://www.cryptopia.co.nz/api/'
else:
    return 'Call Not Identified - Something Went Wrong.'
url += method + '?' + urllib.urlencode(values)
if method not in self.public:
    url = "https://www.cryptopia.co.nz/Api/" + method
    nonce = str( int( time.time() ) )
    post_data = json.dumps( req );
    m = hashlib.md5()
    m.update(post_data)
    requestContentBase64String = base64.b64encode(m.digest())
    signature = self.key + "POST" + urllib.quote_plus( url ).lower() + nonce + requestContentBase64String
    hmacsignature = base64.b64encode(hmac.new(base64.b64decode( self.secret ), signature, hashlib.sha256).digest())
    header_value = "amx " + self.key + ":" + hmacsignature + ":" + nonce
   headers = { 'Authorization': header_value, 'Content-Type':'application/json; charset=utf-8' }
    r = requests.post( url, data = post_data, headers = headers )
return r.json() #changed here