一些 json api 错误 - Base-64 字符数组或字符串的长度无效

问题描述 投票:0回答:2

如果我运行这段代码,

conn = http.client.HTTPSConnection("api.icicidirect.com")
payload = json.dumps({})
#time_stamp & checksum generation for request-headers
time_stamp = datetime.utcnow().isoformat()[:19] + '.000Z'
checksum = hashlib.sha256((time_stamp+payload+API_SECRET).encode("utf-8")).hexdigest()
headers = {
    'Content-Type': 'application/json',
    'X-Checksum': checksum,
    'X-Timestamp': time_stamp,
    'X-AppKey': API_KEY,
    'X-SessionToken': Session_Token
}
conn.request("GET", "/breezeapi/api/v1/dematholdings", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))

参考

文档
后,我得到{"Status":5,"Error":"Invalid length for a Base-64 char array or string."}https://api.icicidirect.com/breezeapi/documents/index.html?python#dematholdings

问题:我错过了什么吗?

python json api rest
2个回答
0
投票

ICIC Direct Breeze API 的工作原理如下

  1. 您必须使用他们的 SSO 登录 -

要求: https://api.icicidirect.com/apiuser/login?api_key=AppKey

回应: 您将在 URL 中看到

sessionkey
API_session

  1. 您必须使用第 1 点中的
    sessionKey
    调用客户详细信息 API。

然后你会得到这样的回复:

{
    "Success": {
        "exg_trade_date": {
            "NSE": "28-Sep-2022",
            "BSE": "28-Sep-2022",
            "FNO": "28-Sep-2022",
            "NDX": "28-Sep-2022"
        },
        "exg_status": {
            "NSE": "O",
            "BSE": "O",
            "FNO": "O",
            "NDX": "O"
        },
        "segments_allowed": {
            "Trading": "Y",
            "Equity": "Y",
            "Derivatives": "Y",
            "Currency": "Y"
        },
        "idirect_userid": "AF077290",
        **"session_token": "ABCwNzcyOTA6MTA5NDM3NTQ=",**
        "idirect_user_name": "APPADURAI   ARAVIND",
        "idirect_ORD_TYP": "",
        "idirect_lastlogin_time": "28-Sep-2022 12:53:51",
        "mf_holding_mode_popup_flg": "N",
        "commodity_exchange_status": "O",
        "commodity_trade_date": "28-Sep-2022",
        "commodity_allowed": "O"
    },
    "Status": 200,
    "Error": null
}

这里

Success.session_token
是您必须用于所有其他 API 调用的实际会话令牌。文件中已经明确提到了这一点。

这是我的工作API

源代码可以在以下位置找到:https://github.com/Aravin/Algo-Trade(JavaScript)


0
投票

我收到相同的错误:{'Status': 5, 'Error': '身份验证失败 :: 无效的校验和。'} 我正在使用Python。

get_funds() 工作正常,这意味着连接已建立并且正确显示了我分配的资金。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.