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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。