You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用HttpClient读取CSV遇连接关闭错误,Postman可正常请求

问题分析与解决方案

你的代码出现「远程主机强迫关闭连接」的错误,核心原因是NSE India的服务器会验证请求头,拒绝缺少必要标识的请求。Postman能正常请求是因为它自动添加了符合服务器要求的请求头(比如User-Agent),而默认的HttpClient请求没有携带这些头信息,被服务器判定为非法请求并断开连接。

解决步骤:

  • 给请求添加必要的请求头,至少包含User-Agent,模拟浏览器或合法客户端请求
  • 推荐复用HttpClient实例(而非每次创建新实例),避免资源浪费和连接问题

修正后的代码示例:

[Test, Explicit]
public async Task ImportSymbolsTestAsync()
{
    var url = "https://nsearchives.nseindia.com/content/equities/EQUITY_L.csv";
    ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls13 | SecurityProtocolType.Tls12;

    // 复用HttpClient实例(建议在全局级别维护单例)
    using var httpClient = new HttpClient();
    // 添加必要请求头
    httpClient.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36");
    httpClient.DefaultRequestHeaders.Accept.ParseAdd("text/csv,application/vnd.ms-excel");

    var response = await httpClient.GetAsync(url);
    response.EnsureSuccessStatusCode();

    // 读取CSV内容示例
    var csvContent = await response.Content.ReadAsStringAsync();
    // 后续处理逻辑...
}

额外说明:

  • NSE的服务器可能会调整反爬策略,如果后续再次出现问题,可以检查是否需要补充其他请求头(比如Referer)
  • 避免短时间内频繁发送请求,防止触发服务器限流机制

内容的提问来源于stack exchange,提问作者harishr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 11:19:59