Java IDE实现天气预报以及给指定手机发送验证码、MQTT自定义天气预报

一、天气预报实现

1. 代码分析

  • 先准备一个URL类的对象 u
URL url = new URL("https://api.jisuapi.com/iqa/query?appkey=62958a3a6ef3c56d&question="+weather);

网址的组成:协议://域名:端口号/虚拟路径?参数列表#锚点
协议: 用于计算机与计算机之间交流的协议,用于传输速率,传输编码,出错的控制等。
常用协议:
http:超文本传输协议,默认端口号:80
https:安全超文本传输协议,默认端口号:443
域名:ip地址的别名。ip地址是计算机在互联网中的唯一表示,192.168.1.1
端口号:范围:0-65535,其中0~1023有特殊含义。
虚拟路径:通过路径的方式,来管理服务器中的文件资源。
参数列表:向服务器发送的数据,每一个参数都是一个键值对,键和值之间通过=号连接,多个键值对之间通过&分割。

2.URL类

关键使用步骤
①先准备一个URL类的对象 u

URL url = new URL("网址内容");

②打开服务器连接,得到连接对象 conn

URLConnection conn = url.openConnection();

③获取加载数据的字节输入流 is

InputStream is = conn.getInputStream();

④将is装饰为能一次读取一行的字符输入流 br

BufferedReader br = new BufferedReader(new InputStreamReader(is));

⑤加载一行数据

String text = br.readLine();

⑥显示

System.out.println(text);

⑦释放资源

br.close();

3.API列表

智能机器人

  • 智能机器人API服务器地址:https://api.jisuapi.com/iqa/query
  • 参数列表
    appkey:秘钥,值为:62958a3a6ef3c56d
    question:与智能机器人的聊天内容 ,例如:北京天气

4.全部代码

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.Scanner;

public class Getweather {
    
    
	public static void main(String args[]) throws Exception 
	{
    
    
		String wea="";
		Scanner reader=new Scanner(System.in);
		System.out.println("请输入要查询天气的城市:");
		wea=reader.next();
		String weather=URLEncoder.encode(wea+"天气","UTF-8");
		//1. 	先准备一个URL类的对象 ur1
		URL url = new URL("https://api.jisuapi.com/iqa/query?appkey=62958a3a6ef3c56d&question="+weather);
		//2. 	打开服务器连接,得到连接对象 conn
		URLConnection conn = url.openConnection();
		//3. 	获取加载数据的字节输入流 is
		InputStream is = conn.getInputStream();
		//4.	将is装饰为能一次读取一行的字符输入流 br
		BufferedReader br = new BufferedReader(new InputStreamReader(is,"UTF-8"));
		//5.	加载一行数据
		String text = br.readLine();
		//6.	显示
		System.out.println(text);
		//7.	释放资源
		br.close();
	}
}

5.实现效果

在这里插入图片描述

二、给指定手机发送验证码

1.准备工作

  • 注册SMS短信通:官网

  • 查看短信接口密钥
    在这里插入图片描述

  • 下载程序包
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

2.执行代码

  • 新建Java项目
    在这里插入图片描述

  • 导入下载的文件

右击项目文件

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

修改test.java文件后运行

在这里插入图片描述

3.运行结果

在这里插入图片描述

三、MQTT自定义天气预报

1.MQTT

  • MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。
  • 发布/订阅者模式
    MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。 在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。

Broker代理:MQTT服务器,类似中间件,用来处理信息并发送到相应的订阅者
发布者:用于发布信息到代理上,发布者也可以是订阅者
订阅者:用于接受信息的客户端

2.MQTT服务器下载

①下载地址: 官网.

在这里插入图片描述
在这里插入图片描述

②创建实例

  • 进入到bin目录并在此处打开cmd执行以下命令
activemq-admin.bat create mybroker

创建实例成功后会在此目录下生成实例名的文件夹
在这里插入图片描述

③查看登录用户名、密码和端口号

  • 进入上面创建的实例目录下的users.properties,可以查看和修改用户名密码
    在这里插入图片描述
  • 在此目录下的activemq.xml中可以查看和修改各种协议连接的端口号,比如这里的mqtt协议的端口号默认是1883
    在这里插入图片描述
  • 在此目录下的jetty.xml中对后台管理员登录的ip和端口进行查看和修改,默认是8161
    在这里插入图片描述
    ④启动MQTT服务器
  • 进入到上面实例目录下mybrokerbin目录,打开cmd,执行如下命令:
mybroker.bat start

在这里插入图片描述
⑤登录管理员后台

  • 浏览器打开:http://localhost:8161/

输入管理员密码,默认是admin admin

在这里插入图片描述

  • 登录成功后进入管理页面
    在这里插入图片描述

Mqtt服务器搭建成功

3.MQTTBox客户端工具的安装

下载之后直接双击安装

  • 点击Create MQTT Client按钮,创建客户端
    在这里插入图片描述
  • 配置参数
    在这里插入图片描述
  • 协议选择mqtt/tcphost就是上面配置文件的端口,然后用户名和密码是上面配置文件的用户名和密码。
  • Connected绿色则表示配置成功,如果是红色的错误提示则配置的参数不对。
    在这里插入图片描述

4.建立天气预报主题

在这里插入图片描述

  • 左边的发布者在Topic to publish中输入主题,Payload Type代表发送的消息类型,在Payload中输入发送的内容,点击Publish发布
  • 右边的订阅者的部分,Topic to subscribe中输入主题,然后点击Subscribe进行订阅
  • 发布效果:
    在这里插入图片描述

在服务器后台管理页面下的Topics下也可以看到相应的主题了

在这里插入图片描述

四、参考资料

Java代码实现手机发送短信功能.
利用API实现获取城市的天气预报信息和给指定手机号码发送验证码——基于Java.
Windows上Mqtt服务器搭建与使用客户端工具MqttBox进行测试

五、总结

初步学习了基于Java实现获取指定城市天气预报以及向指定手机号码发送信息,了解了URL类与智能机器人的使用。初步学习了MQTT协议,以及Windows安装使用MQTT协议和其客户端。

猜你喜欢

转载自blog.csdn.net/qq_48008050/article/details/112303512