我正在尝试从 API 中提取 JSON 数据并努力确定问题的根源。目前,如果 message = "" 我得到准确的数据,但到目前为止,任何非空查询参数都会返回 403 错误。API 文档要求将参数格式化为“customerCode=XXX”,我已经能够在 API 沙箱中生成有效的查询。我认为问题出在 getSignature 函数的某个地方,但我已经用几种方法重写了它,并且 .encode() 或 bytes() 给了我相同的结果。如果代码看起来连贯,并且我的结果是语法错误,我可以联系支持团队。同样,当 message 是一个空字符串时,我会得到有效的结果,所以我很困惑。在每个页面测试多个不同查询参数的所有测试报告页面上都会发生错误。
#Current hash
def getSignature(message):
hashed = hmac.new(key, message.encode('utf-8') , hashlib.sha256)
return base64.b64encode(hashed.digest())
#Header per API specs
def getData(report, message):
headers = {
'Content-Type' : 'application/json',
'Accept' : 'application/json',
'api-auth-id' : api_id,
'api-auth-signature' : getSignature(message)
}
data = requests.get(url + report, headers=headers)
data = data.json()
return data