麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

C# 解析百度天氣數據,Rss解析百度新聞以及根據IP獲取所在城市

2019-11-17 01:49:48
字體:
來源:轉載
供稿:網友

C# 解析百度天氣數據,rss解析百度新聞以及根據ip獲取所在城市

百度天氣

  接口地址:http://api.map.baidu.com/telematics/v3/weather?location=上海&output=json&ak=hXWAgbsCC9UTkBO5V5Qg1WZ9,其中ak是密鑰,自行去申請即可,便于大家測試,樓主就公布并了自己的Key,這樣可以直接獲取到數據。

  獲取到的數據是這樣的:

{"error":0,"status":"success","date":"2014-10-27","results":[{"currentCity":"上海","pm25":"95","index":[{"title":"穿衣","zs":"較舒適","tipt":"穿衣指數","des":"建議著薄外套、開衫牛仔衫褲等服裝。年老體弱者應適當添加衣物,宜著夾克衫、薄毛衣等。"},{"title":"洗車","zs":"較適宜","tipt":"洗車指數","des":"較適宜洗車,未來一天無雨,風力較小,擦洗一新的汽車至少能保持一天。"},{"title":"旅游","zs":"適宜","tipt":"旅游指數","des":"天氣較好,溫度適宜,但風稍微有點大。這樣的天氣適宜旅游,您可以盡情地享受大自然的無限風光。"},{"title":"感冒","zs":"較易發","tipt":"感冒指數","des":"天氣較涼,較易發生感冒,請適當增加衣服。體質較弱的朋友尤其應該注意防護。"},{"title":"運動","zs":"較適宜","tipt":"運動指數","des":"天氣較好,但風力較大,推薦您進行室內運動,若在戶外運動請注意防風。"},{"title":"紫外線強度","zs":"弱","tipt":"紫外線強度指數","des":"紫外線強度較弱,建議出門前涂擦SPF在12-15之間、PA+的防曬護膚品。"}],"weather_data":[{"date":"周一 10月27日 (實時:19℃)","dayPictureUrl":"http://api.map.baidu.com/images/weather/day/duoyun.png","nightPictureUrl":"http://api.map.baidu.com/images/weather/night/duoyun.png","weather":"多云","wind":"東北風3-4級","temperature":"21 ~ 16℃"},{"date":"周二","dayPictureUrl":"http://api.map.baidu.com/images/weather/day/duoyun.png","nightPictureUrl":"http://api.map.baidu.com/images/weather/night/yin.png","weather":"多云轉陰","wind":"東風微風","temperature":"21 ~ 17℃"},{"date":"周三","dayPictureUrl":"http://api.map.baidu.com/images/weather/day/xiaoyu.png","nightPictureUrl":"http://api.map.baidu.com/images/weather/night/xiaoyu.png","weather":"小雨","wind":"東風微風","temperature":"21 ~ 19℃"},{"date":"周四","dayPictureUrl":"http://api.map.baidu.com/images/weather/day/xiaoyu.png","nightPictureUrl":"http://api.map.baidu.com/images/weather/night/xiaoyu.png","weather":"小雨","wind":"東南風微風","temperature":"23 ~ 20℃"}]}]}

  根據返回的Json定義出相應的數據結構:

public class BaiduTQ    {        public int error { get; set; }        public string status { get; set; }        public string date { get; set; }        public List<BaiduResult> results { get; set; }    }    public class BaiduResult    {        public string currentCity { get; set; }        public string pm25 { get; set; }        public List<BaiduIndex> index { get; set; }        public List<BaiDuWeaterData> weather_data { get; set; }    }    public class BaiduIndex    {        public string title { get; set; }        public string zs { get; set; }        public string tipt { get; set; }        public string des { get; set; }    }    public class BaiDuWeaterData    {        public string date { get; set; }        public string dayPictureUrl { get; set; }        public string nightPictureUrl { get; set; }        public string weather { get; set; }        public string wind { get; set; }        public string temperature { get; set; }    }

  然后直接通過Newtonsoft.Json 反序列化成即可。

  既然是獲取天氣,肯定是希望獲取客戶所在城市的天氣,下一步則是需要根據用戶機器IP獲取所在城市,然后獲取該城市的天氣信息。

IP獲取城市

  通過淘寶的IP庫,http://ip.taobao.com/,即可查詢指定IP所在的城市、國家、運營商等。

  有了上面的途徑,我們下一步的工作就是獲取客戶的外網IP,而外網IP,是機器連接外網才會有,所以樓主寫了一個頁面,部署在外網服務器。

  相關代碼如下:

         var ip = Request.UserHostAddress;            using (var client = new WebClient())            {                var url = "http://ip.taobao.com/service/getIpInfo.php?ip=" + ip;                client.Encoding = Encoding.UTF8;                var str = client.DownloadString(url);                Response.Write(str);            }

  這樣我們就可以獲取到客戶所在城市的天氣數據了。

獲取百度新聞

  最近還有個小需求,獲取某某新聞數據,樓主習慣性的查了下百度的相關資料,能通過Rss來獲取百度新聞數據。

  接口地址:http://news.baidu.com/n?cmd=7&loc=0&name=%B1%B1%BE%A9&tn=rss

  打開后,查看它的源,無非就是xml文件,我們可以將xml文件,序列化成對象,如果沒有接觸過這類知識,可以看下《xml與對象的序列化和反序列化》。

  根據它的源,就能輕松定義出數據結構。

    [XmlRoot("rss")]    public class Rss    {        public Channel channel { get; set; }    }    [XmlRoot("channel")]    public class Channel    {        public string title { get; set; }        public BaiduImage image { get; set; }        public string link { get; set; }        public string description { get; set; }        public string language { get; set; }        public string lastBuildDate { get; set; }        public string docs { get; set; }        public string generator { get; set; }        [XmlElement]        public List<Channel_Item> item { get; set; }    }    public class BaiduImage    {        public string title { get; set; }        public string link { get; set; }        public string url { get; set; }    }    public class Channel_Item    {        public string title { get; set; }        public string link { get; set; }        public string pubDate { get; set; }        public string guid { get; set; }        public string source { get; set; }        public string author { get; set; }        public string description { get; set; }    }

  序列化的方法很簡單。

        /// <summary>        /// 反序列化        /// </summary>        public static T Deserialize<T>(string xmlContent)        {            XmlSerializer xs = new XmlSerializer(typeof(T));            using (StringReader strReader = new StringReader(xmlContent))            {                XmlReader xmlReader = XmlReader.Create(strReader);                return (T)xs.Deserialize(xmlReader);            }        }

  

相關測試代碼如下:

  一鍵下載


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美中文日韩 | av成人免费在线观看 | 午夜国内精品a一区二区桃色 | 亚洲精品欧美在线 | 欧美成人精品不卡视频在线观看 | 丁香天堂网 | 国产免费专区 | 欧美一级黄色免费 | 成年免费视频黄网站在线观看 | 国产在线精品一区二区三区 | 色啪综合 | 夜夜看 | 精品国产91久久久久久久 | 中文字幕一区在线观看视频 | 国产一区免费在线 | 国产资源在线播放 | 久久影院在线观看 | 久久久久国 | 亚洲精品一二三区 | 久久国产精品久久久久久电车 | 羞羞视频在线免费 | 91美女福利视频 | www.射| 日本a∨精品中文字幕在线 欧美1—12sexvideos | 国产91久久久久久 | 免费观看黄色一级视频 | 国产精品久久久久国产精品三级 | 成人精品一区二区三区中文字幕 | 国产精品视频免费在线观看 | 日韩美香港a一级毛片 | 免费色片 | 免费毛片播放 | 日韩视频一区二区三区在线观看 | 精品亚洲国产视频 | 国产精品美女久久久免费 | av一道本| 7777网站| 黄视频网站免费观看 | 久久逼网 | 中文字幕在线观看免费视频 | 日韩av在线网址 |