目录
一、天气预报实现
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服务器 - 进入到上面实例目录下
mybroker
的bin
目录,打开cmd
,执行如下命令:
mybroker.bat start
⑤登录管理员后台
- 浏览器打开:http://localhost:8161/
输入管理员密码,默认是admin admin
- 登录成功后进入管理页面
Mqtt服务器搭建成功
3.MQTTBox客户端工具的安装
- 下载地址: 官网
下载之后直接双击安装
- 点击
Create MQTT Client
按钮,创建客户端
- 配置参数
- 协议选择
mqtt/tcp
,host
就是上面配置文件的端口,然后用户名和密码是上面配置文件的用户名和密码。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协议和其客户端。