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

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

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

准备工作

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,14,26,32","blue":"04","blue2":"","sales":"341958742","poolmoney":"537930372","content":"江苏1注,江西1注,山东1注,湖南1注,广西2注,共6注。","addmoney":"","addmoney2":"","msg":"","z2add":"","m2add":"","prizegrades":[{"type":1,"typenum":"6","typemoney":"8313468"},{"type":2,"typenum":"75","typemoney":"331346"},{"type":3,"typenum":"1092","typemoney":"3000"},{"type":4,"typenum":"59713","typemoney":"200"},{"type":5,"typenum":"1094967","typemoney":"10"},{"type":6,"typenum":"8397492","typemoney":"5"},{"type":7,"typenum":"","typemoney":""}]},{"name":"双色球","code":"2018025","detailsLink":"/c/2018-03-06/431323.shtml","videoLink":"/c/2018-03-06/431322.shtml","date":"2018-03-06(二)","week":"二","red":"04,13,16,19,21,25","blue":"14","blue2":"","sales":"341614936","poolmoney":"513258146","content":"广西1注,共1注。","addmoney":"","addmoney2":"","msg":"","z2add":"","m2add":"","prizegrades":[{"type":1,"typenum":"1","typemoney":"10000000"},{"type":2,"typenum":"83","typemoney":"350024"},{"type":3,"typenum":"700","typemoney":"3000"},{"type":4,"typenum&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值