本文共 5423 字,大约阅读时间需要 18 分钟。
一. 安装Java开发环境和Java IDE编程工具 Eclipse 或 IDEA,基于HTTP协议(严格地说是 “REST接口规范”)读取互联网上web服务网站实现:
1)读取指定城市的天气预报信息; 2)给指定手机号码发送验证码; 二. 学习和熟悉MQTT 协议 1)在本机上安装MQTT服务器和客户端软件,练习消息发布与订阅。 2)利用网上提供的MQTT服务,编写MQTT客户端程序(python、java或c#、c/c++, 任意一种编程语言),自定义一个主题,完成订阅与发布。
超文本传输协议
超文本传输协议(HTTP)是用于从万维网服务器传输超文本到本地浏览器的传送协议。超文本传输协议(HTTP)是面向事务的(Transaction-oriented),应用层协议规定了在浏览器和服务器之间的请求和响应的格式和规则,它是万维网上能够可靠交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。 主要特点
 主要特点    HTTP(HyperText Transport Protocol)是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP协议的详细内容请参考RFC2616。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URL、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应,响应的内容包括消息协议的版本,成功或者错误编码加上包含服务器信息、实体元信息以及可能的实体内容。 运作方式 在WWW中,“客户”与“服务器”是一个相对的概念,只存在于一个特定的连接期间,即在某个连接中的客户在另一个连接中可能作为服务器。基于HTTP协议的客户/服务器模式的信息交换过程,它分四个过程:建立连接、发送请求信息、发送响应信息、关闭连接。
 HTTP(HyperText Transport Protocol)是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP协议的详细内容请参考RFC2616。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URL、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应,响应的内容包括消息协议的版本,成功或者错误编码加上包含服务器信息、实体元信息以及可能的实体内容。 运作方式 在WWW中,“客户”与“服务器”是一个相对的概念,只存在于一个特定的连接期间,即在某个连接中的客户在另一个连接中可能作为服务器。基于HTTP协议的客户/服务器模式的信息交换过程,它分四个过程:建立连接、发送请求信息、发送响应信息、关闭连接。  工作机制 HTTP的工作过程使用请求 /响应握手方式: ①客户发生连接 ,双方建立起一 个 TCP连接;②客户发出请求;③服务器处理请求 ,返回应答;④服务器关闭连接。
 工作机制 HTTP的工作过程使用请求 /响应握手方式: ①客户发生连接 ,双方建立起一 个 TCP连接;②客户发出请求;③服务器处理请求 ,返回应答;④服务器关闭连接。 
安装Java开发环境和Java IDE编程工具 Eclipse 或 IDEA,基于HTTP协议(严格地说是 “REST接口规范”)读取互联网上web服务网站实现
由于之前已经安装过了相关的开发软件,这里就不细说其安装了,大家看可以找“度娘”,进行安装操作。
代码实现
package com.kkb.demo;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 Demo4 {   	public static void main(String[] args) throws IOException {   		//关键使用步骤:		//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");处,可以查询到天气。例如:“重庆天气”、“山东天气”等等。   代码实现(为避免号码泄露,这里号码用01表示)
package com.kkb.demo;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 Demo5 {   	public static void main(String[] args) throws IOException {   		//关键使用步骤:		//1. 	先准备一个URL类的对象 u		URL url = new URL("https://itdage.com/kkb/kkbsms?key=xzk&number=01010101010&code=zxw9420");		//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();	}}   运行程序
 结果显示
 结果显示  
 URL url = new URL("https://itdage.com/kkb/kkbsms?key=xzk&number=***********&code=******"); 在第一处“*”输入指定的手机号码;在第二处“ * ”输入所需要发送的验证码; 至此,使用HTTP协议读取指定城市的天气预报以及给指定手机发送验证码的实践就完成了。   MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和致动器(比如通过Twitter让房屋联网)的通信协议。
 
   MQTT协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议,它具有以下主要的几项特性:
1、使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合; 2、对负载内容屏蔽的消息传输; 3、使用 TCP/IP 提供网络连接; 4、有三种消息发布服务质量: 5、小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量; 6、使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制;
基本特点
MQTT是一种发布/订阅传输协议,基本原理和实现如下 简单示例 MQTT 协议主要是根据以下情况设计的: M2M(Machine to Machine),机器或设备间端到端通信,比如传感器之间的数据通讯。 设备(Machine)中,例如传感器,硬件能力很弱,协议要考虑尽量小的资源消耗,比如计算能力和存储等。 根据 MQTT 的基础了解后并结合简单的架构,在这里做一个简单的示例图,可以更直观的理解MQTT协议的通信模型。MQTT Broker 就选择 EMQ 作为示范。比如有1个温度传感器(1个Machine),1个移动设备,1个电脑,一个服务器(3个Machine),都可以得到或者显示温度传感器的温度值,需要先通过 MQTT 协议subscribe(订阅)一个比如叫 temperature 的 topic(主题)如下:
 简单示例 MQTT 协议主要是根据以下情况设计的: M2M(Machine to Machine),机器或设备间端到端通信,比如传感器之间的数据通讯。 设备(Machine)中,例如传感器,硬件能力很弱,协议要考虑尽量小的资源消耗,比如计算能力和存储等。 根据 MQTT 的基础了解后并结合简单的架构,在这里做一个简单的示例图,可以更直观的理解MQTT协议的通信模型。MQTT Broker 就选择 EMQ 作为示范。比如有1个温度传感器(1个Machine),1个移动设备,1个电脑,一个服务器(3个Machine),都可以得到或者显示温度传感器的温度值,需要先通过 MQTT 协议subscribe(订阅)一个比如叫 temperature 的 topic(主题)如下:  MQTT控制报文 MQTT协议工作在TCP之上,端和代理之间通过交换预先定义的控制报文来完成通信。MQTT报文有3个部分组成,并按下表顺序出现:
 MQTT控制报文 MQTT协议工作在TCP之上,端和代理之间通过交换预先定义的控制报文来完成通信。MQTT报文有3个部分组成,并按下表顺序出现:  所有的MQTT控制报文都有一个固定报头,期格式如下:
 所有的MQTT控制报文都有一个固定报头,期格式如下:  
   下载Apache Apoll
. 解压下载后的文件到当前文件夹 解压后
 解压后  环境配置 配置Java编译环境JDK; 下载JDK
 环境配置 配置Java编译环境JDK; 下载JDK  双击JDK,会显示安装界面
 双击JDK,会显示安装界面  点击下一步,可以更改安装路径
 点击下一步,可以更改安装路径  点击下一步,等待安装,完成后点击关闭
 点击下一步,等待安装,完成后点击关闭  配置JAVA_HOME;
 配置JAVA_HOME;   C:\Program Files\Java\jdk-12.0.1
PATH %JAVA_HOME%\bin\
电脑桌面,找到控制面板
 选择系统安全
 选择系统安全  搜索
 搜索高级系统设置,弹出界面如下  选择
 选择高级,点击环境变量;  配置
 配置Java_home环境变量 在系统变量中找,或者新建  
  没有找到。我们新建 双击
 没有找到。我们新建 双击编辑系统变量;点击新建 输入C:\Program Files\Java\jdk-12.0.1 PATH %JAVA_HOME%\bin\ 点击确定即可 验证JDK是否安装成功 点击左下角状态栏,输入
 点击确定即可 验证JDK是否安装成功 点击左下角状态栏,输入cmd;  以管理员身份运行,在弹出的界面的输入
 以管理员身份运行,在弹出的界面的输入 java -version  至此,有关JDK的相关配置就完成了。 在解压文件中,进入文件bin下,使用
 至此,有关JDK的相关配置就完成了。 在解压文件中,进入文件bin下,使用cmd运行apollo.cmd create mybroker;  在运行
 在运行apollo.cmd,出现如示图像,则配置成功  开启apollo服务 打开文件所处路径并复制
 开启apollo服务 打开文件所处路径并复制  使用cmd,进入文件路径
 使用cmd,进入文件路径  运行
 运行apollo.cmd create mybroker  在bin目录下生成mybroker文件,配置信息在
 在bin目录下生成mybroker文件,配置信息在mybroker/etc/apollo.xml,用户名和密码在mybroker/etc/users.properties。默认的用户名:admin 密码:password  
  在文件夹中,进入mybroker\bin中,运行
 在文件夹中,进入mybroker\bin中,运行.\apollo-broker-service install,.\apollo-broker-service start  在计算机管理处,找到
 在计算机管理处,找到apollo,并启动该服务  在浏览器中输入http://127.0.0.1:61680,进入apollo的登录页面
 在浏览器中输入http://127.0.0.1:61680,进入apollo的登录页面  默认的
 默认的Username=admin;Password=password;输入即可登录 至此,MQTT的服务器就搭配完成了。   下载客户端
. 解压 解压到当前文件夹 运行Paho程序
 运行Paho程序  添加连接并进行相关配置
 添加连接并进行相关配置  输入用户名与密码
 输入用户名与密码  连接成功后,显示如下
 连接成功后,显示如下  
   消息订阅
 主题发布
 主题发布  接收内容
 接收内容  
   HTTP协议是万维网常用的超文本传输协议,所以在使用的时候比较轻松。对于MQTT协议,在环境配置的时候出了点问题,百度了很久才解决的,然后在搭配服务器时,由于路径出现中文,导致cmd命令无法识别,系统找不到指定路径,更改路径后就可以了。但是在搭配客户端环境的时候,也出现了问题。最后参考了大佬的博客,然后就可以了。虽然问题多,花费了较长时间,但是完成后还是挺开心的。最后,希望这篇文章对你有所帮助。
.
. . . . . . .转载地址:http://drmiz.baihongyu.com/