C#實現(xiàn)解析百度天氣數(shù)據(jù),Rss解析百度新聞以及根據(jù)IP獲取所在城市的方法
本文實例講述了C#實現(xiàn)解析百度天氣數(shù)據(jù),Rss解析百度新聞以及根據(jù)IP獲取所在城市的方法,分享給大家供大家參考。具體實現(xiàn)方法如下:
一、百度天氣
接口地址:http://api.map.baidu.com/telematics/v3/weather?location=上海&output=json&ak=hXWAgbsCC9UTkBO5V5Qg1WZ9,其中ak是密鑰,自行去申請即可,便于大家測試,樓主就公布并了自己的Key,這樣可以直接獲取到數(shù)據(jù)。
獲取到的數(shù)據(jù)是這樣的:
根據(jù)返回的Json定義出相應(yīng)的數(shù)據(jù)結(jié)構(gòu):
{
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 反序列化成即可。
既然是獲取天氣,肯定是希望獲取客戶所在城市的天氣,下一步則是需要根據(jù)用戶機器IP獲取所在城市,然后獲取該城市的天氣信息。
二、IP獲取城市
通過淘寶的IP庫,http://ip.taobao.com/,即可查詢指定IP所在的城市、國家、運營商等。
有了上面的途徑,我們下一步的工作就是獲取客戶的外網(wǎng)IP,而外網(wǎng)IP,是機器連接外網(wǎng)才會有,所以樓主寫了一個頁面,部署在外網(wǎng)服務(wù)器。
相關(guān)代碼如下:
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);
}
這樣我們就可以獲取到客戶所在城市的天氣數(shù)據(jù)了。
三、獲取百度新聞
最近還有個小需求,獲取某某新聞數(shù)據(jù),樓主習(xí)慣性的查了下百度的相關(guān)資料,能通過Rss來獲取百度新聞數(shù)據(jù)。
接口地址:http://news.baidu.com/n?cmd=7&loc=0&name=%B1%B1%BE%A9&tn=rss
打開后,查看它的源,無非就是xml文件,我們可以將xml文件,序列化成對象,如果沒有接觸過這類知識,可以看下《xml與對象的序列化和反序列化》。
根據(jù)它的源,就能輕松定義出數(shù)據(jù)結(jié)構(gòu)。
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>
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);
}
}
完整實例代碼點擊此處本站下載。
希望本文所述對大家的C#程序設(shè)計有所幫助。
相關(guān)文章
C# SendInput 模擬鼠標(biāo)操作的實現(xiàn)方法
C# SendInput 模擬鼠標(biāo)操作的實現(xiàn)方法,需要的朋友可以參考一下2013-04-04
利用C#/VB.NET實現(xiàn)PPT轉(zhuǎn)換為HTML
利用PowerPoint可以很方便的呈現(xiàn)多媒體信息,且信息形式多媒體化,表現(xiàn)力強。但難免在某些情況下我們會需要將PowerPoint轉(zhuǎn)換為HTML格式,本文就為大家整理了轉(zhuǎn)換方法,希望對大家有所幫助2023-05-05
C#?winform實現(xiàn)中英文切換功能的四種方式
這篇文章主要介紹了在C#?winform應(yīng)用程序中實現(xiàn)中英文切換功能的四種方式,資源文件(Resources),本地化(Localization),動態(tài)設(shè)置控件字體和切換語言環(huán)境這四種方式,下面將詳細(xì)介紹每種方式及其具體實現(xiàn),并討論它們的優(yōu)缺點,需要的朋友可以參考下2024-04-04

