首页 > Windows开发 > 详细

.NET调用百度天气api经验

时间:2015-03-25 17:26:19      阅读:838      评论:0      收藏:1      [点我收藏+]

首先申请api 获取AK码

然后获取JSON数据

然后解析JSON数据

最后呈现出读取的数据

个人修改 只呈现天气预报部分

注:其中使用的类库直接使用转载博文中类库

只是修改了其中的program.CS文件中的部分

修改部分如下

using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using Newtonsoft.Json;
using System.Xml.Serialization;
using System.IO;
using System.Xml;
namespace BDCode
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var client = new WebClient())
            {
                //获取所在城市
                client.Encoding = Encoding.UTF8;
                var url = "http://ip.taobao.com/service/getIpInfo.php?ip=27.37.26.219";
                var json = client.DownloadString(url);
                var ip = JsonConvert.DeserializeObject<TIPData>(json);

                ip.data.city = "南京";

                //获取天气
                url = "http://api.map.baidu.com/telematics/v3/weather?location=" + ip.data.city + "&output=json&ak=hXWAgbsCC9UTkBO5V5Qg1WZ9";
                json = client.DownloadString(url);
                var tq = JsonConvert.DeserializeObject<BaiduTQ>(json);
                Console.WriteLine("{0} {1}", tq.results[0].currentCity, tq.results[0].weather_data[0].date);
                Console.WriteLine("error:{0} status:{1} date{2}",tq.error,tq.status,tq.date);
                Console.WriteLine("currentCity:{0} pm2.5:{1}",tq.results[0].currentCity,tq.results[0].pm25);
                for (int i = 0; i <tq.results[0].weather_data.Count; i++)
                {
                    Console.WriteLine("");
                    Console.WriteLine(" date:{0} \n dayPictureUrl:{1} \n nightPictureUrl:{2} \n waeather:{3} \n wind:{4} \n temperature:{5} \n ", tq.results[0].weather_data[i].date, tq.results[0].weather_data[i].dayPictureUrl, tq.results[0].weather_data[i].nightPictureUrl, tq.results[0].weather_data[i].weather, tq.results[0].weather_data[i].wind, tq.results[0].weather_data[i].temperature);
                }
                //Console.WriteLine("");

                /*
                //获取百度新闻数据
                url = "http://news.baidu.com/n?cmd=7&loc=0&name=%B1%B1%BE%A9&tn=rss";
                client.Encoding = Encoding.GetEncoding("gb2312");
                var xml = client.DownloadString(url);
                var rss = Deserialize<Rss>(xml);
                foreach (var news in rss.channel.item)
                {
                    Console.WriteLine("标题:{0}", news.title);
                    Console.WriteLine("链接:{0}", news.link);
                    Console.WriteLine("来源:{0}", news.source);
                    Console.WriteLine("描述:{0}", news.description);
                    Console.WriteLine();
                }
                 * */
                Console.ReadLine();
            }
        }

        /// <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);
            }
        }
    }
}
1 WebClient类的DownloadString方法 使用

  即把网页的数据返回以String形式返回

  var json=WebClient.DownloadString(url)//返回JSON形式的数据

2 JSON数据的解析

  本文学习转载的博文 使用的是

 JsonConvert.DeserializeObject<BaiduTQ>(json);方法

 要使用这个必须调用Newton.json 类库 以及Newton.json.dll文件

3 JSON格式解析的其他学习

  3.1  http://www.cnblogs.com/QLJ1314/p/3862583.html

  3.2 http://www.cnblogs.com/txw1958/archive/2012/08/01/csharp-json.html

  3.3 http://www.cnblogs.com/mcgrady/archive/2013/06/08/3127781.html

4 转载的博客

  4.1 http://www.daxueit.com/article/5477.html

  4.2 备份网址http://blog.csdn.net/u010416101/article/details/44622087

5 转载工程示例的源代码

  http://download.csdn.net/detail/u010416101/8532211


修改后的示例结果

技术分享

.NET调用百度天气api经验

原文:http://blog.csdn.net/u010416101/article/details/44622233

(2)
(2)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!