zoukankan      html  css  js  c++  java
  • c# 调取墨迹调用墨迹天气接口保存到数据库

    一、墨迹接口调用

    
            private String host =ConfigurationManager.AppSettings["WeatherHost"];//接口直接写到webconfig中
            private const String pathWeather = "/whapi/json/alicityweather/briefforecast3days";
            private const String method = "POST";
            private String appcode = ConfigurationManager.AppSettings["WeatherAppCode"];//你的appcode,
            private const String pathAQI = "/whapi/json/alicityweather/briefaqi";
            private string GetWeatherORAQI(string path, int cityId = 2)
            {
                String querys = "";
                String bodys = "cityId=" + cityId;
                String url = host + path;
                HttpWebRequest httpRequest = null;
                HttpWebResponse httpResponse = null;
    
                if (0 < querys.Length)
                {
                    url = url + "?" + querys;
                }
    
                if (host.Contains("https://"))
                {
                    ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
                    httpRequest = (HttpWebRequest)WebRequest.CreateDefault(new Uri(url));
                }
                else
                {
                    httpRequest = (HttpWebRequest)WebRequest.Create(url);
                }
                httpRequest.Method = method;
                httpRequest.Headers.Add("Authorization", "APPCODE " + appcode);
                //根据API的要求,定义相对应的Content-Type
                httpRequest.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
                if (0 < bodys.Length)
                {
                    byte[] data = Encoding.UTF8.GetBytes(bodys);
                    using (Stream stream = httpRequest.GetRequestStream())
                    {
                        stream.Write(data, 0, data.Length);
                    }
                }
                try
                {
                    httpResponse = (HttpWebResponse)httpRequest.GetResponse();
                }
                catch (WebException ex)
                {
                    httpResponse = (HttpWebResponse)ex.Response;
                }
    
                //Console.WriteLine(httpResponse.StatusCode);
                //Console.WriteLine(httpResponse.Method);
                //Console.WriteLine(httpResponse.Headers);
                Stream st = httpResponse.GetResponseStream();
                StreamReader reader = new StreamReader(st, Encoding.GetEncoding("utf-8"));
                return reader.ReadToEnd();
            }
    
            public static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
            {
                return true;
            }

    二、这里接口调用可以直接在墨迹实例中找到,返回数据格式为JSON格式,下面进行返回天气数据处理。

                    var json = GetWeatherORAQI(pathWeather); //接口调用,返回JSON数据var WeatherJson = JsonConvert.DeserializeObject<WeatherJson>(json);//数据反序列化
                    List<WeatherModel> models = new List<WeatherModel>();
    //循环获取未来三天天气,保存到集合中
    foreach (var item in WeatherJson.data.forecast) { WeatherModel mode = new WeatherModel(); mode.city = WeatherJson.data.city.pname; mode.date = item.predictDate; mode.weather = item.conditionDay; mode.temperature = string.Format("{0}-{1}", item.tempDay, item.tempNight); mode.wind = Enum.GetName(typeof(WindEnum), Convert.ToInt32(item.windLevelDay.Split('-')[0])); mode.airQuality = GetAQI(int.Parse(AQIModel.data.aqi.value)); mode.dress = item.windLevelDay.Split('-')[0]; mode.curtemperature = item.tempDay; models.Add(mode); }
    //未来三天天气,进行序列化保存到数据库中
    var weather = JsonConvert.SerializeObject(models); WeatherInfo winfo = new WeatherInfo() { Date = DateTime.Now.Date, CityCode = 2, Weather = weather }; _context.WeatherInfo.Add(winfo); _context.SaveChanges();

    三、天气需要每天获取最新,这里可用定时任务完成,每天早晨8点进行更新

            public MyJobs()
            {
                Schedule(() =>
                {
                    IServices.IWeatherService _service = new WeatherService();
                    _service.Save();
                }).ToRunEvery(1).Days().At(8, 0);
            }
  • 相关阅读:
    知识点:Mysql 索引优化实战(3)
    知识点:Mysql 索引原理完全手册(2)
    知识点:Mysql 索引原理完全手册(1)
    大数据体系:数据分析体系总图
    数据化分析:微信文章不增粉的主要原因
    提问:MicrosoftUnderlying input stream returned zero bytes
    优化:更优雅的异步代码?
    涨姿势:Mysql 性能优化完全手册
    总结:Java 集合进阶精讲1
    冷知识点:COLLATE 关键字是什么意思?
  • 原文地址:https://www.cnblogs.com/xinbaba/p/8855263.html
Copyright © 2011-2022 走看看