天气预报API使用心得

进来做了几个跟天气预报有关的.NET桌面应用程序。苦于中国天气网的SmartWeatherAPI需要申请。所以使用到了OpenWeatherMapForecast.io 的天气数据API。做个记录方便查阅。

两个网站所提供的数据都比较齐全。OpenWeatherMap提供JSON与XML版本的数据,而Forecast.io仅仅提供JSON。不过对于C#.net来说有JSON就足够了。.NET提供了JSON的解析器Json.NET。在 NuGget中可以联机得到。

通过以下代码可以将网站提供的JSON数据实例化一个读取流。

1 WebRequest myrequest = WebRequest.Create("http://api.openweathermap.org/data/2.5/forecast/daily?id=" + cityID + "&cnt=7&mode=json");
2 myrequest.UseDefaultCredentials = false;
3 WebResponse myresponse = myrequest.GetResponse();
4 Stream resStream = myresponse.GetResponseStream();
5 StreamReader sr = new StreamReader(resStream, System.Text.Encoding.Default);
8 string jsontext = sr.ReadToEnd();
9 JsonReader reader = new JsonTextReader(new StringReader(jsontext));

从而对其中的数据进行读取

 1  while (reader.Read())
 2  {
    if (reader.Value + "" == "min")                     //最低气温
 5     {
 6       reader.Read();
 7       if (reader.ValueType.ToString() == "System.Double")
 8        {
 9          double temd = (double)reader.Value;
10           tMin[i1] = temd;
12        }
      else
15        {
16          long teml = (long)reader.Value;
17           tMin[i1] = teml;
18        }
19        tMin[i1] = (int)(tMin[i1] - 273.15);
20        i1++;
21     }
22     if (reader.Value + "" == "max")                     //最高气温
23     {
24       reader.Read();
25       if (reader.ValueType.ToString() == "System.Double")
26     {
27       double temd = (double)reader.Value;
28       tMax[i2] = temd;
    }
    else
33     {
34       long teml = (long)reader.Value;
35       tMax[i2] = teml;
36     }
37     tMax[i2] = (int)(tMax[i2] - 273.15);
38     i2++;
39 }

关于接口中返回的数据,都是简单的英语。给出链接。

OpenWeatherMap   Forecast.io

第一次写技术博客,虽然水平不高。也在彳亍。

 

天气预报API使用心得

上一篇:存储学习之--通过StarWind在Windows 2008 Server模拟IP SAN


下一篇:『电脑技巧』破解Win7/Win8登录密码