C#访问新浪股票接口失效的处理

新浪接口很好用,但后来一直就不能用了,比如

http://hq.sinajs.cn?list=sh601003

返回Forbidden

找了一下,发现腾讯的股票接口和新浪的很接近,能用,就直接换腾讯了。


今天因为港股数据的问题,还是想试试新浪接口,找了一下文章,发现问题是新浪需要一个header


新浪股票接口失效解决方法,2022年访问接口出现 “Kinsoku jikou desu” 日语禁止访问

解决办法是在请求头部添加Referer字段

2022 新浪股票接口更新需要加Referer才能获取数据

Referer:http://finance.sina.com.cn


于是尝试,修改访问前修改HttpWebRequest,结果不行,研究一圈,发现需要用反射

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
//request.Headers.Add("referer", "https://finance.sina.com.cn/");
//request.Headers["referer"] = "https://finance.sina.com.cn/";
MethodInfo priMethod = request.Headers.GetType().GetMethod("AddWithoutValidate", BindingFlags.Instance | BindingFlags.NonPublic);
priMethod.Invoke(request.Headers, new string[] { "referer", "https://finance.sina.com.cn/" });


string content = "";
try
{
     HttpWebResponse response = (HttpWebResponse)request.GetResponse();
     if (response.StatusCode == HttpStatusCode.OK) //防止无响应
     {
         StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.GetEncoding("GB2312"));
         content = reader.ReadToEnd();
         reader.Close();
     }
}

相关引用

using System;
using System.Collections.Generic;
using System.Text;
using System.Timers;
using System.Text.RegularExpressions;
using System.Data;
using System.Net;
using System.ComponentModel;
using System.Web;
using System.Web.UI;
using System.IO;
using System.Reflection;

posted @   jetz  阅读(1117)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
历史上的今天:
2006-05-02 在dos下访问ntfs
点击右上角即可分享
微信分享提示