HTTP和MQTT协议实践

本文介绍了基于Java环境使用HTTP协议读取天气信息和发送验证码,以及如何利用Apollo搭建MQTT服务器,包括安装配置、启动服务和客户端连接的详细步骤。然而,在尝试MQTT客户端连接时遇到了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、安装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 服务器

  1. 下载apollo
  2. 配置 jdk
  3. 配置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 文件内的地址,然后点击 连接 ,即可连接成功,但我一直连接不上,找了许多办法也不行
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值