java实现天气预报,java获取天气

  java实现天气预报,java获取天气

  写爬虫互联网协议(互联网协议)被封了怎么解决?立即使用

  

Java实现发送天气功能(附代码)

  

不知不觉,又到了雨季,你对象是不是经常忘记带伞呢,这个时候写一个自动定时发送邮件的程序,提醒她带伞,会不会对你崇拜有加呢,当然,如果你对象是一位攻城狮,当我没讲~

  技术栈

  Spring Boot 2.3.1

  Jdk 1.8

  专家

  

快速创建实例

   前往https://start.spring.io/如下所示

  点击产生生产一个活力解压导入想法即可

  

pom.xml 文件

   ?可扩展标记语言版本=1.0 编码=UTF八号?项目xmlns= http://maven。阿帕奇。org/POM/4。0 .0 xmlns:xsi= http://www。w3。 org/2001/XML架构-实例

  xsi:架构位置= http://maven。阿帕奇。org/POM/4。0 .0 https://maven.apache.org/xsd/maven-4.0.0.xsd

  型号版本4 .0 .0/型号版本

  父母

  groupIdorg.springframework.boot/groupId

  artifact id spring-boot-starter-parent/artifact id

  version2.3.1.RELEASE/version

  相对路径/

  /父母

  groupIdcom.github.ekko/groupId

  人造弹簧靴-电子邮件/artifactId

  版本1 .0 .0/版本

  姓名引导-电子邮件/姓名

  描述Spring Boot的演示项目/描述

  性能

  Java。1.8版/java.version

  /属性

  属国

  属国

  groupIdorg.springframework.boot/groupId

  artifact id spring-boot-starter-mail/artifact id

  /依赖关系

  属国

  groupIdcn.hutool/groupId

  artifactIdhutool-all/artifactId

  版本4 .6 .1/版本

  /依赖关系

  属国

  groupIdcom.alibaba/groupId

  artifactIdfastjson/artifactId

  版本1 .2 .70/版本

  /依赖关系

  属国

  groupIdorg.projectlombok/groupId

  artifactIdlombok/artifactId

  版本1 .18 .12/版本

  范围提供/范围

  /依赖关系

  属国

  groupIdorg.springframework.boot/groupId

  artifact id spring-boot-starter-web/artifact id

  /依赖关系

  属国

  groupIdorg.springframework.boot/groupId

  artifactId spring-boot-starter-test/artifactId

  范围测试/范围

  不包括的项目:如接受服务项目是由投保以前已患有的疾病或伤害引致的

  排除

  groupIdorg.junit.vintage/groupId

  artifactId JUnit-vintage-engine/artifactId

  /排除

  /排除

  /依赖关系

  /依赖关系

  建设

  插件

  插件

  groupIdorg.springframework.boot/groupId

  artifact id spring-boot-maven-plugin/artifact id

  /插件

  /插件

  /构建

  仓库

  !-阿里云主仓库,代理了maven central和共享仓库-

  仓库

  idaliyun/id

  namealiyun/名称

  urlhttps://maven.aliyun.com/repository/public/url

  放

  启用真/已启用

  /版本

  快照

  启用假/已启用

  /快照

  /存储库

  !-阿里云代理春天官方仓库-

  仓库

  id弹簧-里程碑/id

  名称春季里程碑/名称

  urlhttps://maven.aliyun.com/repository/spring/url

  放

  启用真/已启用

  /版本

  快照

  已启用假/已启用

  /快照

  /存储库

  /存储库

  插件库

  !-阿里云代理春天插件仓库-

  插件工厂

  id弹簧-插件/id

  名称春天-插件/名称

  urlhttps://maven.aliyun.com/repository/spring-plugin/url

  放

  启用真/已启用

  /版本

  快照

  已启用假/已启用

  /快照

  /pluginRepository

  /插件库/项目

新建接收天气api的实体

  包com。github。ekko。弹簧工具。模型;进口龙目岛。数据;进口龙目岛100 . NoArgsConstructor导入Java。util。列表;@ Data @ NoArgsConstructorpublic class Weather {

  私弦日;

  私有字符串日期;

  私弦周;

  //天气情况

  私串世界福音派联盟

  私有字符串编织;

  私弦空;

  私弦湿度;

  //空气质量优

  私有字符串空气水平

  //空气质量描述:空气很好,可以外出活动,呼吸新鲜空气,拥抱大自然

  私弦空中提示;

  私有字符串tem1

  私有字符串tem2

  私有字符串项;

  个人分发名单的时间;}Weather.java

  包com。github。ekko。弹簧工具。模型;进口龙目岛。数据;进口龙目岛NoArgsConstructor @ Data @ NoArgsConstructorpublic class Whours {

  //14日20时

  私弦日;

  //中雨

  私串世界福音派联盟

  //28 实时温度

  私有字符串项;

  //无持续风向

  私串赢;

  //风速3-4级

  私有字符串winSpeed}

天气接口

  用的是https://www.tianqiapi.com/index

  也没给我推广费,也作为我白嫖它这么久的回报吧

  

封装的天气api简单演示

  

获取天气api与发送邮件的逻辑

  Whours.java

  包com。github。ekko。弹簧工具。服务;导入com。github。ekko。弹簧工具。模型。天气;导入Java。util。列表;公共接口电子邮件服务{

  布尔sendSimpleMessage();

  列出天气getWeather();}新建EmailService.java接口

  包com。github。ekko。弹簧工具。服务。impl导入cn。胡工具。http。http请求;导入cn。胡工具。http。http util导入com。阿里巴巴。快速JSON。JSON导入com。github。ekko。弹簧工具。模型。天气;导入com。github。ekko。弹簧工具。服务。电子邮件服务;导入org。spring框架。豆子。工厂。注释。自动连线;导入org。spring框架。邮件。爪哇邮箱。javamail发件人;导入org。spring框架。邮件。爪哇邮箱。mime消息助手;导入org。spring框架。刻板印象。服务;导入javax。邮件。互联网。mime消息;导入Java。util。ArrayList导入Java。util。列表;导入Java。util。可选;@Servicepublic类EmailServiceImpl实现电子邮件服务{

  私有最终静态字符串FROM_MAIL=你的发送邮箱,和配置文件中相同;

  私有最终静态字符串TO_MAIL=接收人邮箱;

  私有最终静态字符串APPID=你申请的天气美国石油学会(美国石油协会)的appid,自行替换;

  私有最终静态字符串APPSECRET=你申请的天气美国石油学会(美国石油协会)的APPSECRET,自行替换;

  公共JavaMailSender emailSender

  @自动连线

  public void setEmailSender(Java mail sender电子邮件发送者){

  这个。邮件发送者=邮件发送者;

  }

  @覆盖

  public boolean sendSimpleMessage(){

  尝试{

  mime消息消息=电子邮件发件人。createmimemessage();

  mime message helper mime message helper=new mime message helper(message,true);

  mime消息助手。setto(TO _ MAIL);

  mime消息助手。set FROM(FROM _ MAIL);

  mimeMessageHelper.setSubject(今日份天气到了~~);

  mime消息助手。构建html(获取天气().get(0))、true);

  emailSender.send(消息);

  } catch(异常e) {

  e。printstacktrace();

  返回错误的

  }

  返回真实的

  }

  public ListWeather getWeather() {

  http请求http请求=http util。创建get( https://www。天茶皮。com/API?version=v1 APPID= APPID app secret= app secret city id=101020100));

  String res=httpRequest.execute().body();

  对象数据=JSON。解析对象(RES).get( data );

  返回JSON。解析数组(JSON。tojsonstring(数据),天气。类);

  }

  私有字符串构建Html(天气天气){

  string buffer html=新字符串缓冲区();

  html.append(! DOCTYPE html\n

  html\n

  头部\n

  meta charset=\utf-8\\n

  标题文档标题/title\n

  /头体’);

  if (weather.getWea().包含(雨)) {

  html.append(h1今日有雨,狗子请带伞!/h1’);

  }

  html.append(hr/h3今日天气如下/H3泰伯思时间/thth天气/thth温度/th/tr’);

  可选。指可空的(天气。get hours())。orElse(new ArrayList())。forEach(whours - {

  html.append(trtd )。append(whours.getDay())。追加(/tdtd )。append(whours.getWea())。追加(/tdtd )。append(whours.getTem())。追加(/TD/tr );

  });

  html.append(/table/body

  /html’);

  返回html。tostring();

  }}实现EmailService接口

  

设置发送账号信息

   这里以腾讯邮箱为例子,先获取发送邮件的授权码

  查询其邮箱的简单邮件传输协议地址,链接,可以看到

  使用加密套接字协议层的通用配置如下:

  接收邮件服务器:pop.qq.com,使用SSL,端口号995

  发送邮件服务器:smtp.qq.com,使用SSL,端口号465或587

  账户名:您的即时通信软件邮箱账户名(如果您是肠血管活性肽帐号或Foxmail帐号,账户名需要填写完整的邮件地址)

  密码:您的即时通信软件邮箱密码

  电子邮件地址:您的即时通信软件邮箱的完整邮件地址

配置appliction.properties

   server.port=9090

  服务器。servlet。上下文路径=/邮件

  spring.mail.host=smtp.qq.com

  spring.mail.port=465

  spring.mail.username=你的邮箱地址

  spring.mail.password=刚刚获取的授权码

  春天。邮件。属性。邮件。SMTP。auth=true

  春天。邮件。属性。邮件。SMTP。SSL。启用=真

  春天。邮件。属性。邮件。SMTP。starttls。enable=true

控制层

  声明@启用调度定时任务

  给指定方法设置时间表达式@Scheduled(cron=0 0 8 * *?)

  包com。github。ekko。弹簧工具。控制器;导入com。github。ekko。弹簧工具。模型。天气;导入com。github。ekko。弹簧工具。服务。电子邮件服务;导入org。spring框架。豆子。工厂。注释。自动连线;导入org。spring框架。日程安排。注释。启用计划;导入org。spring框架。日程安排。注释。预定;导入org。spring框架。网络。绑定。注释。获取映射;导入org。spring框架。网络。绑定。注释。休息控制器;导入Java。util。列表;@ rest controller @ EnableSchedulingpublic类邮件控制器{

  私有电子邮件服务

  @自动连线

  公共void set电子邮件服务(电子邮件服务电子邮件服务){

  这个。邮箱服务=邮箱服务;

  }

  @GetMapping(/send )

  @Scheduled(cron=0 0 23 * *?)

  public boolean sendEmail() {

  返回电子邮件服务。sendsimplemessage();

  }

  @GetMapping(get-weather )

  public ListWeather getWeather() {

  返回电子邮件服务。getweather();

  }}

启动类

   直接启动spring boote电子邮件应用程序即可

  包com。github。ekko。弹簧工具;导入org。spring框架。靴子。春季申请;导入org。spring框架。靴子。自动配置。弹簧启动应用程序;@SpringBootApplicationpublic类SpringbootEmailApplication {

  公共静态void main(String[] args) {

  春季申请。运行(springbootemailapplication。class,args);

  }}

效果

  有点丑,将就用,自行美化

  感谢大家的阅读,希望大家收益多多。

  推荐教程: 《java视频教程》 以上就是爪哇实现发送天气功能(附代码)的详细内容,更多请关注我们其它相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: