如果我运行这段代码,
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"))在提到documentation,https://api.icicidirect.com/breezeapi/documents/index.html?python#dematholdings之后,我得到了{"Status":5,"Error":"Invalid length for a Base-64 char array or string."}。
问题:我有遗漏什么吗?
发布于 2022-09-28 07:31:19
的工作方式如下
登录
请求:https://api.icicidirect.com/apiuser/login?api_key=AppKey
响应:您将在URL中获得sessionkey或API_session
中的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中)
https://stackoverflow.com/questions/73463890
复制相似问题