一、安装Java开发环境和Java IDE编程工具 Eclipse 或 IDEA,基于HTTP协议读取互联网上web服务网站实现
1.读取指定城市的天气预报信息
代码如下:
package Weather;
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;
public class Weather_Report {
public static void main(String args[]) throws Exception {
weather();
email();
}
//获取天气信息
public static void weather() throws Exception{
//关键使用步骤:
//0. 将发送给图灵机器人的文字转化为URL编码
String question = URLEncoder.encode("重庆天气", "UTF-8");
//1. 先准备一个URL类的对象 u
URL url = new URL("https://api.jisuapi.com/iqa/query?appkey=62958a3a6ef3c56d&question="+question);
//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();
}
}
如果要获取北京的天气,只需要将 String question = URLEncoder.encode
(“重庆天气”, “UTF-8”); 中的 “ 重庆 ” 二字改为 “ 北京 ” 即可,如:String question = URLEncoder.encode
(“北京天气”, “UTF-8”)
代码中自己设置 URL url = new URL("https://itdage.com/kkb/kkbsms?key=xzk&number=***********&code=******");
中的 number 和 code 的值
编译结果如下:
2.给指定手机号码发送验证码
代码如下:
package Weather;
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;
public class Weather_Report {
public static void main(String args[]) throws Exception {
weather();
email();
}
//发送验证码
//number 是目标手机
//code 是验证码
public static void email() throws IOException{
//关键使用步骤:
//1. 先准备一个URL类的对象 u
URL url = new URL("https://itdage.com/kkb/kkbsms?key=xzk&number=***********&code=******");
//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();
}
}
编译结果如下:
二、MQTT 协议
1.MQTT协议简介
- MQTT(Message Queuing Telemetry
Transport,消息队列遥测传输协议),是一种基于发布/订阅模式的轻量级通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。 - MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。
- MQTT协议工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议
实现MQTT协议需要:客户端和服务器端 - MQTT协议中有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。
- MQTT传输的消息分为:主题(Topic)和负载(payload)两部分
Topic,可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内容(payload)
payload,可以理解为消息的内容,是指订阅者具体要使用的内容
2. 使用 apollo 搭建 MQTT 服务器
- 下载apollo
- 配置 jdk
- 配置apollo
(1)进入到 apollo 下面的 bin 文件夹下,使用命令行窗口
(2)使用命令 apollo.cmd create yapollo
(3)开启 appllo 服务
apache-apollo-1.7.1\bin\yapollo\bin 路径下,运行命令 .\apollo-broker-service install 和 .\apollo-broker-service start 即可
(4)在浏览器中输入 http://127.0.0.1:61680,进入 apollo 的登录页面
(5)登录输入:Username=admin,Password=password
第二次登陆的时候,就无法再次登录。可以输入:https://127.0.0.1:61681,进行再次登录
(6)修改 ip 地址,以供局域网连接
查看IP地址
登录 MQTT 服务器打开之后,选择 configration 下选择 apollo.xml 文件,修改 <host_name> 属性为服务器 ip(192.168.43.165),<web_admin> 同步修改,以及 tcp 节点下将默认的 tcp://0.0.0.0:61613 修改为服务器的 ip,以供局域网使用,点击 Save 保存,即可在局域网内使用服务器的 ip 登录
输入http://192.168.43.165:61680可重新打开
搭建完成
3.使用 MQTT 客户端创建连接
点击运行paho
添加连接
点击 选项 ,勾选上登录,并输入用户名和密码
输入刚刚的 apollo.xml 文件内的地址,然后点击 连接 ,即可连接成功,但我一直连接不上,找了许多办法也不行