实验目的
实验任务如下:
一. 安装Java开发环境和Java IDE编程工具 Eclipse 或 IDEA,基于HTTP协议(严格地说是 “REST接口规范”)读取互联网上web服务网站实现:
1)读取指定城市的天气预报信息;2)给指定手机号码发送验证码;
提示:参考课堂上给的培训视频和课件资料。
二. 学习和熟悉MQTT 协议
1)在本机上安装MQTT服务器和客户端软件,练习消息发布与订阅,比如自定义一个天气预报的消息主题。
提示:可以利用课堂教学资料或网上资源。
2)利用网上提供的MQTT服务,编写MQTT客户端程序(python、java或c#、c/c++, 任意一种编程语言),自定义一个天气预报主题,完成订阅与发布。思考MQTT与前面REST协议的区别。
可利用的免费在线MQTT网站: https://www.emqx.io/cn/mqtt/public-mqtt5-broker
发送验证码
我使用的是SMS短信通的接口
所以只需在注册账号后稍微修改官方代码即可:
import java.util.HashMap;
import java.util.Map;
/**
* @Title: http://www.smschinese.cn/api.shtml
* @date 2011-3-22
* @version V1.2
*/
public class test {
private static String Uid = "VIANGL";
private static String Key = "d41d8cd98f00b204e980";
private static String smsMob = "18084006140";
private static String smsText = "作业已经完成,田原631807060620";
public static void main(String[] args) {
HttpClientUtil client = HttpClientUtil.getInstance();
int resultGbk = client.sendMsgGbk(Uid, Key, smsText, smsMob );
if(resultGbk>0){
System.out.println("GBK�ɹ���������=="+resultGbk);
}else{
System.out.println(client.getErrorMsg(resultGbk));
}
}
}
天气预报
天气预报我使用的是百度地图的接口:
sbf.append(strRead);
sbf.append("\r\n");
}
reader.close();
result = sbf.toString();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
//将返回的中文字符的编码(乱码)处理一下,转换成正确的中文
public static String unicode2String(String str){
int indexU=0;
StringBuffer result=new StringBuffer();
char t;
indexU=str.indexOf("\\u");
while(indexU>=0){
result.append(str.substring(0,indexU));
t=(char)Integer.parseInt(str.substring(indexU+2,indexU+6),16);
result.append(t);
str=str.substring(indexU+6);
indexU=str.indexOf("\\u");
}
return result.toString();
}
public static void main(String[] args) {
String httpUrl = "http://apis.baidu.com/apistore/weatherservice/citylist";
String httpArg = "cityname=%E6%9C%9D%E9%98%B3";
String jsonResult = request(httpUrl, httpArg);
System.out.println(unicode2String(jsonResult));
}
}