c# 调取墨迹调用墨迹天气接口保存到数据库

摘要:
1、 墨迹接口调用privateStringhost=ConfigurationManager AppSettings[“WeatherHost”];//接口直接写入webconfig中的privateconsistStringpathWeather=“/whpi/json/alicityweather/bridgeforest3days”;privateconstStringmethod=“POST

一、墨迹接口调用


        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);
        }

免责声明:文章转载自《c# 调取墨迹调用墨迹天气接口保存到数据库》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇开源物联网平台(Thingsboard)--使用使用nvm管理node版本-mac本安装nvm下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

java 实现基于opencv全景图合成

因项目需要,自己做了demo,从中学习很多,所以分享出来,希望有这方面需求的少走一些弯路,opencv怎么安装网上教程多多,这里不加详细说明,我安装的opencv-3.3.0  如上图所示,找到相应的jar包,这里讲一下如何这个jar如何导入Maven仓库 mvn install:install-file -Dfile=D:opencv-3.0.0ope...

上手七牛云存储

早就听说过七牛云存储,终于有时间上手实践。 1、第一步,注册七牛账号,由于是测试,首先申请的是个人账号 2、注册成功之后,默认是体验账号,每月只有1G的空间容量及1G的下载流量       3、账号认证,认证成功之后将升级为标准账号,每月有10G的空间容量及20G的下载流量       虽然认证麻烦了些,但看得出来,七牛还是很良心的,这种免费套餐对于一...

谈jdbcTemplate与mybatis

为什么会产生 Hibernate Mybatis 这类的dao层框架 传统的jdbc 虽然执行速度很快,但是开发效率很低,随着面向对象开发的设计思想,在面向对象编程中 将对象 进行持久化,存入关系型的数据库时,由于关系型数据库的设计思想是数学思维,在持久化时,必须要对象拆分各个属性值,才可存入数据库;传统的jdbc 持久化时 对象持久化时 ,取出对象的一个...

poi提取docx中的文字和图片

package com.fry.poiDemo.dao; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintStream; import...

libcurl HTTP POST请求向服务器发送json数据

转载:http://blog.csdn.net/dgyanyong/article/details/14166217 转载:http://blog.csdn.net/th_gsb/article/details/42810007 转载:http://www.cnblogs.com/yangxunpeng/articles/7040697.html 转载:h...

WinRAR(WinZip)压缩与解压实现(C#版Window平台)

  本文的原理是借助Windows平台安装的WinRAR(WinZip)实现C#程序的调用(注:WinRAR压缩解压WinZip同样适用)。 先来看WinRAR(WinZip)自身的支持调用命令: 压缩命令:a {0} {1} -r 【{0}:压缩后文件名|{1}:待压缩的文件物理路径】 ex:"a 你妹.rar f:\\MM -r" (含义为将f盘下...