进来做了几个跟天气预报有关的.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 } 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 }
关于接口中返回的数据,都是简单的英语。给出链接。
第一次写技术博客,虽然水平不高。也在彳亍。