您现在的位置是:主页 > news > 专业网站设计如何提升网页品质/百度站长链接提交
专业网站设计如何提升网页品质/百度站长链接提交
admin2025/4/28 18:46:30【news】
简介专业网站设计如何提升网页品质,百度站长链接提交,团购网站销售技巧,做棋牌游戏网站天气查询是一个简单的HTTP接口,根据用户输入的adcode,查询目标区域当前/未来的天气情况 为了完成某项任务,我们需要不间断获取每小时的天气。这里我们使用C#,调用高德的API简单做一个实时获取天气信息的小程序,高德的天…
专业网站设计如何提升网页品质,百度站长链接提交,团购网站销售技巧,做棋牌游戏网站天气查询是一个简单的HTTP接口,根据用户输入的adcode,查询目标区域当前/未来的天气情况 为了完成某项任务,我们需要不间断获取每小时的天气。这里我们使用C#,调用高德的API简单做一个实时获取天气信息的小程序,高德的天…
天气查询是一个简单的HTTP接口,根据用户输入的adcode,查询目标区域当前/未来的天气情况
为了完成某项任务,我们需要不间断获取每小时的天气。这里我们使用C#,调用高德的API简单做一个实时获取天气信息的小程序,高德的天气API是每小时更新一次数据的,全国大部分地方都有数据
- 首先需要在高德开放平台去注册,申请一个key,我们将它保存在一个字符串中
string key = 你的key; //高德key
- 写一个获取天气的类,里面主要有两个方法,分别是得到天气信息和计算下一级行政区。计算下一级行政区可以先用于返回当前城市的下一级行政区,然后依次调用Weather方法返回当前的城市的天气信息
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Net;
using System.Text;
using System.Windows.Forms;namespace Weater
{class OWeather{// 获取当前城市的天气信息public static string GetWeather(string city, string key, ref string[] re){string weatherjson = ",";try{WebClient client = new WebClient();client.Encoding = Encoding.UTF8;string url = String.Format("https://restapi.amap.com/v3/weather/weatherInfo?key={0}&city={1}", key, city);//将返回的json数据转为JSON对象JObject jo = ((JObject)JsonConvert.DeserializeObject(client.DownloadString(url)));weatherjson = jo["lives"].ToString();re = weatherjson .Split('\"', ',');weatherjson = re[3] + "," + re[8] + "," + re[18] + "," + re[23] + "," + re[28] + "," + re[33] + "," + re[38] + "," + re[43];}catch{weatherjson = "NoData";}return weatherjson;}// 计算当前城市的下一级行政区,可用于大范围获取天气public static string GetPlace(string city, string key){string placejson = ",";try{WebClient client = new WebClient();client.Encoding = Encoding.UTF8;string url = String.Format("https://restapi.amap.com/v3/config/district?key={0}&keywords={1}", key, city);//将返回的json数据转为JSON对象JObject jo = ((JObject)JsonConvert.DeserializeObject(client.DownloadString(url)));placejson = jo["districts"].ToString();}catch{//异常处理 }return placejson;}}
}
- 在Form1的代码中调用
GetWeather
就可以得到天气信息
private void weatherm_Click(object sender, EventArgs e){weatherTbx.Text += OWeather.Weather(cityTbx.Text, key, ref re) + "\r\n";}
- 如果需要获取大范围城市的可以先使用
GetPlace
,在使用getplaceBtn_Click
时返回的下一级行政区带有城市的经纬度(这里高德的坐标是GCJ-02的),可以在保存在数据中,方便最后可以将数据在GIS平台展出来
private void getplacem_Click(object sender, EventArgs e){string[] enf = OWeather.GetPlace(getplaceTbx.Text, key).Split('{', '}');for (int i = 0; i < enf.Length; i++){if (enf[i].Length < 30){enf[i] = "*";}if (enf[i] != "*"){string[] enf2 = enf[i].Split(':', ',');subcityTbx.Text += enf2[5].Split('\"')[1] + "," + enf2[7].Split('\"')[1] + "," + enf2[8].Split('\"')[0] + "\r\n";}}}private void mul_getplacem_Click(object sender, EventArgs e){string[] str = new string[subcityTbx.Lines.Length];for (int i = 0; i < subcityTbx.Lines.Length; i++){str[i] = subcityTbx.Lines[i];}for (int i = 2; i < subcityTbx.Lines.Length - 1; i++){cityTbx.Text = str[i].Split(',')[0];weatherTbx.Text += OWeather.Weather(cityTbx.Text, key, ref re) + "\r\n";}cityTbx.Text = "";}
- 这基本就好了,中间省略了一些没写,可以试一下。如果需要一直获取下去可以加个Timer,设定时间为1h执行一次获取天气,一段时间保存为一个txt/csv/xls。最后把这个打包成exe一直挂着就行了(Windows下,Linux要怎么弄不懂)