最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2014年10月27日 11:34:48   投稿:shichen2014  
這篇文章主要介紹了C#實現解析百度天氣數據,Rss解析百度新聞以及根據IP獲取所在城市的方法,非常具有實用價值,需要的朋友可以參考下

本文實例講述了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":"較易發(fā)","tipt":"感冒指數","des":"天氣較涼,較易發(fā)生感冒,請適當增加衣服。體質較弱的朋友尤其應該注意防護。"},{"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);
    }
}

完整實例代碼點擊此處本站下載

希望本文所述對大家的C#程序設計有所幫助。

相關文章

  • c#集合快速排序類實現代碼分享

    c#集合快速排序類實現代碼分享

    這篇文章主要介紹了C#實現集合排序類,大家參考使用吧
    2013-12-12
  • C#.net中的類型轉換詳細介紹

    C#.net中的類型轉換詳細介紹

    C#.net中的類型轉換詳細介紹,需要的朋友可以參考一下
    2013-04-04
  • Unity實現彈球打磚塊游戲

    Unity實現彈球打磚塊游戲

    這篇文章主要為大家詳細介紹了Unity實現彈球打磚塊游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • c#執(zhí)行excel宏模版的方法

    c#執(zhí)行excel宏模版的方法

    這篇文章主要介紹了c#執(zhí)行excel宏模版的方法,導出Excel模版的代碼如下,大家參考使用吧
    2014-01-01
  • C# 獲取IP及判斷IP是否在區(qū)間

    C# 獲取IP及判斷IP是否在區(qū)間

    本文主要介紹了C# 獲取IP及判斷IP是否在區(qū)間的方法。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • C# SendInput 模擬鼠標操作的實現方法

    C# SendInput 模擬鼠標操作的實現方法

    C# SendInput 模擬鼠標操作的實現方法,需要的朋友可以參考一下
    2013-04-04
  • 利用C#/VB.NET實現PPT轉換為HTML

    利用C#/VB.NET實現PPT轉換為HTML

    利用PowerPoint可以很方便的呈現多媒體信息,且信息形式多媒體化,表現力強。但難免在某些情況下我們會需要將PowerPoint轉換為HTML格式,本文就為大家整理了轉換方法,希望對大家有所幫助
    2023-05-05
  • C# 格式化字符首字母大寫的方法

    C# 格式化字符首字母大寫的方法

    這篇文章介紹了C# 格式化字符首字母大寫的方法,有需要的朋友可以參考一下
    2013-08-08
  • C#?winform實現中英文切換功能的四種方式

    C#?winform實現中英文切換功能的四種方式

    這篇文章主要介紹了在C#?winform應用程序中實現中英文切換功能的四種方式,資源文件(Resources),本地化(Localization),動態(tài)設置控件字體和切換語言環(huán)境這四種方式,下面將詳細介紹每種方式及其具體實現,并討論它們的優(yōu)缺點,需要的朋友可以參考下
    2024-04-04
  • C# dataset存放多張表的實例

    C# dataset存放多張表的實例

    這篇文章主要介紹了C# dataset存放多張表的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01

最新評論

昌图县| 灵宝市| 吉林市| 常宁市| 茂名市| 祁连县| 温泉县| 永年县| 公主岭市| 日照市| 诏安县| 阳谷县| 衡阳县| 永修县| 永新县| 辽宁省| 施甸县| 大邑县| 察隅县| 琼结县| 罗平县| 夹江县| 广昌县| 大城县| 余江县| 榆树市| 金堂县| 徐州市| 黄梅县| 平陆县| 溆浦县| 松桃| 三门峡市| 尖扎县| 湘乡市| 洛隆县| 太康县| 息烽县| 容城县| 宿迁市| 炎陵县|