首页 > 代码库 > 天气预报API使用心得

天气预报API使用心得

进来做了几个跟天气预报有关的.NET桌面应用程序。苦于中国天气网的SmartWeatherAPI需要申请。所以使用到了OpenWeatherMap 和 Forecast.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        }      else15        {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;    }    else33     {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使用心得