如何使用C#无需APIKey登录Zerodha Kite API
使用C#通过encToken连接Zerodha Kite API
前提准备
- 从已登录的Zerodha Kite Web会话中提取
encToken:- 打开浏览器登录Kite Web
- 按F12打开开发者工具,切换到Application标签
- 在Local Storage中找到
kite.encToken,复制其值
C#实现示例
所有请求需携带Authorization: token enctoken:<你的encToken>请求头,以下是封装的客户端示例及调用代码:
using System; using System.Net.Http; using System.Net.Http.Headers; using System.Threading.Tasks; public class KiteApiClient { private readonly HttpClient _httpClient; private readonly string _encToken; public KiteApiClient(string encToken) { _encToken = encToken; _httpClient = new HttpClient { BaseAddress = new Uri("https://api.kite.trade/") }; // 设置认证请求头 _httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("token", $"enctoken:{_encToken}"); } // 获取持仓信息 public async Task<string> GetHoldings() { var response = await _httpClient.GetAsync("portfolio/holdings"); response.EnsureSuccessStatusCode(); return await response.Content.ReadAsStringAsync(); } // 获取订单列表 public async Task<string> GetOrders() { var response = await _httpClient.GetAsync("orders"); response.EnsureSuccessStatusCode(); return await response.Content.ReadAsStringAsync(); } // 可扩展其他API接口,比如下单、行情查询等 } // 调用示例 class Program { static async Task Main(string[] args) { string encToken = "替换为你的encToken值"; var client = new KiteApiClient(encToken); try { string holdings = await client.GetHoldings(); Console.WriteLine("持仓信息:"); Console.WriteLine(holdings); } catch (HttpRequestException ex) { Console.WriteLine($"请求失败:{ex.Message}"); } } }
关键注意事项
encToken与登录会话绑定,会话过期或登出后需重新提取- 可根据官方API文档扩展其他接口,所有请求均需携带上述认证头
- 建议使用
System.Text.Json或Newtonsoft.Json将返回的JSON字符串反序列化为C#实体类,便于数据处理
内容的提问来源于stack exchange,提问作者GOPAL SHARMA
相关产品推荐
相关产品推荐

