【日记】c# 读取网页json数据

本文介绍如何使用C#从网页中获取JSON数据。以读取双色球官网历史开奖号码为例,首先获取JSON URL和请求头,然后通过HttpWebRequest设置表头并下载JSON数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

例:读取双色球官网历史开奖号码数据

准备工作

web url: 

http://www.cwl.gov.cn/kjxx/ssq/kjgg/

按F12在网络面板得到

json url:

http://www.cwl.gov.cn/cwl_admin/kjxx/findDrawNotice?name=ssq&issueCount=30

json request header:

Accept: application/json, text/javascript, */*; q=0.01
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN
Connection: Keep-Alive
Cookie: 21_vq=4
DNT: 1
Host: www.cwl.gov.cn
Referer: http://www.cwl.gov.cn/kjxx/ssq/kjgg/
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299
X-Requested-With: XMLHttpRequest

读取json数据

使用HttpWebRequest读取json数据,根据上面表头设置HttpWebRequest表头

private static async Task<string> DownloadJsonAsync(string url)  
{  
    var request = (HttpWebRequest)WebRequest.Create(url);  
    request.Method = "GET";  
    SetHeaderValue(request.Headers, "Host", "www.cwl.gov.cn");  
    SetHeaderValue(request.Headers, "Referer", @"http://www.cwl.gov.cn/kjxx/ssq/kjgg/");  
    SetHeaderValue(request.Headers, "Connection", "keep-alive");  
    SetHeaderValue(request.Headers, "Accept", @"application/json, text/javascript, */*; q=0.01");  
    SetHeaderValue(request.Headers, "X-Requested-With", "XMLHttpRequest");  
    SetHeaderValue(request.Headers, "User-Agent", @"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299");  
    SetHeaderValue(request.Headers, "Accept-Encoding", "gzip, deflate");  
    SetHeaderValue(request.Headers, "Accept-Language", "zh-CN");  
  
    var resp = (HttpWebResponse)(await request.GetResponseAsync());  
  
    using (var stream = resp.GetResponseStream())  
    using (var reader = new StreamReader(stream))  
    {  
        return await reader.ReadToEndAsync();  
    }  
}  
  
private static void SetHeaderValue(WebHeaderCollection header, string name, string value)  
{  
    var property = typeof(WebHeaderCollection).GetProperty("InnerCollection", BindingFlags.Instance | BindingFlags.NonPublic);  
    if (property != null)  
    {  
        var collection = property.GetValue(header, null) as NameValueCollection;  
        collection[name] = value;  
    }  
} 

通过调用DownloadJsonAsync方法

var url = @"http://www.cwl.gov.cn/cwl_admin/kjxx/findDrawNotice?name=ssq&issueCount=30";
var jsonstring = await DownloadJsonAsync(url);

获得如下json数据:

{"state":0,"message":"查询成功","pageCount":1,"countNum":0,"Tflag":0,"result":[{"name":"双色球","code":"2018028","detailsLink":"/c/2018-03-13/431556.shtml","videoLink":"/c/2018-03-13/431555.shtml","date":"2018-03-13(二)","week":"二","red":"03,08,11,14,18,23","blue":"16","blue2":"","sales":"352015830","poolmoney":"578094167","content":"天津1注,内蒙古1注,上海1注,浙江1注,山东1注,河南1注,广东1注,共7注。","addmoney":"","addmoney2":"","msg":"","z2add":"","m2add":"","prizegrades":[{"type":1,"typenum":"7","typemoney":"7676997"},{"type":2,"typenum":"220","typemoney":"106471"},{"type":3,"typenum":"1869","typemoney":"3000"},{"type":4,"typenum":"82708","typemoney":"200"},{"type":5,"typenum":"1493643","typemoney":"10"},{"type":6,"typenum":"8341565","typemoney":"5"},{"type":7,"typenum":"","typemoney":""}]},{"name":"双色球","code":"2018027","detailsLink":"/c/2018-03-11/431446.shtml","videoLink":"/c/2018-03-11/431445.shtml","date":"2018-03-11(日)","week":"日","red":"02,07,09,14,18,28","blue":"05","blue2":"","sales":"386579026","poolmoney":"561561972","content":"江苏1注,福建1注,山东2注,湖北2注,共6注。","addmoney":"","addmoney2":"","msg":"","z2add":"","m2add":"","prizegrades":[{"type":1,"typenum":"6","typemoney":"8250400"},{"type":2,"typenum":"144","typemoney":"169291"},{"type":3,"typenum":"1652","typemoney":"3000"},{"type":4,"typenum":"87914","typemoney":"200"},{"type":5,"typenum":"1565274","typemoney":"10"},{"type":6,"typenum":"10744036","typemoney":"5"},{"type":7,"typenum":"","typemoney":""}]},{"name":"双色球","code":"2018026","detailsLink":"/c/2018-03-08/431333.shtml","videoLink":"/c/2018-03-08/431332.shtml","date":"2018-03-08(四)","week":"四","red":"04,07,12,
去年年末才看过一本关于ASP.NET 操作注册表的书,可惜那时候就压根没想过写到网上去。 现在想想 写到网上有诸多好处 比如、 1、可以快速回忆相关知识点,还有自己写的参考代码,比别人写的强多了 2、可以丰富自己的博客推广自己 3、加强自己写作能力 贴出代码了 -------------------- 1、引入命名空间 using Microsoft.Win32;//修改注册表所需要用到的命名空间 2、之后方法喽 //修改注册表 设置IE打印背景图片 适用于IE8一下版本,修改为工具选项下的 打印背景颜色与图像 public void IESetupPrint_Background() { RegistryKey key = Registry.CurrentUser; RegistryKey software = key.OpenSubKey("Software\\Microsoft\\Internet Explorer\\Main", true); //该项必须已存在 software.SetValue("Print_Background", "yes"); software.Close(); } //设置页眉 页脚为空 public void IESetupPageSetup() { RegistryKey key = Registry.CurrentUser; RegistryKey software = key.OpenSubKey("Software\\Microsoft\\Internet Explorer\\PageSetup", true); //该项必须已存在 software.SetValue("header", ""); software.SetValue("footer", ""); software.Close(); } //设置页边距 设置IE页面设置 打印背景图片 //上下边距具体的值可以 先在IE里面设置再查看注册表实际值 然后在程序里写死 public void IESetupPage() { RegistryKey key = Registry.CurrentUser;//IE8以上版本 修改为页面设置 里页面 打印背景颜色与图像 RegistryKey software = key.OpenSubKey("Software\\Microsoft\\Internet Explorer\\PageSetup", true); software.SetValue("margin_top", 0.55984); software.SetValue("margin_bottom", 0.55984); software.SetValue("margin_left", 0.75433); software.SetValue("margin_right", 0.40000); software.SetValue("Print_Background", "yes"); } //查看注册表相应的键值 运行输入 regedit
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值