1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 利用API实现获取城市的天气预报信息和给指定手机号码发送验证码——基于Java

利用API实现获取城市的天气预报信息和给指定手机号码发送验证码——基于Java

时间:2022-08-01 03:31:05

相关推荐

利用API实现获取城市的天气预报信息和给指定手机号码发送验证码——基于Java

文章目录

一、认识网址二、获取城市的天气预报信息三、给指定手机号码发送验证码四、实现自定义短信内容的短信验证码发送五、小结六、参考资料

一、认识网址

网址的组成:协议://域名:端口号/虚拟路径?参数列表#锚点

协议: 用于计算机与计算机之间交流的协议,用于传输速率,传输编码,出错的控制等。

常用协议:

http:超文本传输协议,默认端口号:80

https:安全超文本传输协议,默认端口号:443

域名:ip地址的别名。ip地址是计算机在互联网中的唯一表示,192.168.1.1

端口号:范围:0-65535,其中0~1023有特殊含义。

虚拟路径:通过路径的方式,来管理服务器中的文件资源。

参数列表:向服务器发送的数据,每一个参数都是一个键值对,键和值之间通过=号连接,多个键值对之间通过&分割。

二、获取城市的天气预报信息

代码

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.UnsupportedEncodingException;import .MalformedURLException;import .URL;import .URLConnection;import .URLEncoder;public class Getweather {public static void main(String[] args) throws IOException {// TODO Auto-generated method stubString weather=URLEncoder.encode("重庆天气","UTF-8");//1. 先准备一个URL类的对象 uURL url = new URL("/iqa/query?appkey=62958a3a6ef3c56d&question="+weather);//2. 打开服务器连接,得到连接对象 connURLConnection conn = url.openConnection();//3. 获取加载数据的字节输入流 isInputStream is = conn.getInputStream();//4.将is装饰为能一次读取一行的字符输入流 brBufferedReader br = new BufferedReader(new InputStreamReader(is,"UTF-8"));//5.加载一行数据String text = br.readLine();//6.显示//截取相关内容int i=text.indexOf("content");int j=text.indexOf("relquestion");String text1=text.substring(i+10, j-3);int m=text1.indexOf("<5.4m\\/s\\r\\n");String text2="";text2=text1.substring(m+12, text1.length());text1=text1.substring(0, m);System.out.println(text1);System.out.println(text2);//7.释放资源br.close();}}

相关说明

智能机器人API服务器地址

/iqa/query

参数列表

appkey(秘钥):62958a3a6ef3c56d

question:与智能机器人的聊天内容

运行结果

实现查询任意城市天气

//在开始处,添加如下代码String wea="";Scanner reader=new Scanner(System.in);System.out.println("请输入要查询天气的城市:");wea=reader.next();String weather=URLEncoder.encode(wea+"天气","UTF-8");

运行效果

三、给指定手机号码发送验证码

代码

import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import .MalformedURLException;import .URL;import .URLConnection;import java.util.Scanner;public class SendMessage {public static void main(String[] args) throws Exception {// TODO Auto-generated method stub//关键使用步骤://1. 先准备一个URL类的对象 uURL url = new URL("/kkb/kkbsms?key=xzk&number=要发送信息的目的电话号码&code=验证码");//2. 打开服务器连接,得到连接对象 connURLConnection conn = url.openConnection();//3. 获取加载数据的字节输入流 isInputStream is = conn.getInputStream();//4.将is装饰为能一次读取一行的字符输入流 brBufferedReader br = new BufferedReader(new InputStreamReader(is,"UTF-8"));//5.加载一行数据String text = br.readLine();//6.显示System.out.println(text);//7.释放资源br.close();}}

相关说明

短信API服务器地址:

/kkb/kkbsms

参数列表

key:秘钥,值为:xzk

number:接收验证码的手机号

code:A-Za-z0-9的验证码内容。

对应电话号码会收到如下信息

该方式是利用已经建好的API进行调用实现的。

四、实现自定义短信内容的短信验证码发送

本来想使用阿里云提供的短信服务,可是无法通过短信签名请求的审核,就无法实现该服务的使用。后面在网上查找其他相关服务和室友的帮助下,找到下面这个工具

/api.shtml

1.注册一个账号

2.登录

默认会免费赠送5条信息。选择快捷菜单中的发送短信后,在里面设置签名。设置完成后,回到首页,点击短信API接口,就可以看到相关的代码示例。

3.相关代码

①下载相关的jar包,并导入到工程中

jar下载地址:

commons-logging-1.1.1.jar

commons-httpclient-3.1.jar

commons-codec-1.4.jar

②创建一个类(包含main函数)

③添加代码

import java.io.UnsupportedEncodingException;import mons.httpclient.Header;import mons.httpclient.HttpClient;import mons.httpclient.NameValuePair;import mons.httpclient.methods.PostMethod;public class SendMsg_webchinese {public static void main(String[] args)throws Exception{HttpClient client = new HttpClient();PostMethod post = new PostMethod("http://gbk.");post.addRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=gbk");//在头文件中设置转码NameValuePair[] data ={new NameValuePair("Uid", "本站用户名"),//Uid指的是注册时的用户名new NameValuePair("Key", "接口安全秘钥"),new NameValuePair("smsMob","手机号码"),//发送短信的目的手机号new NameValuePair("smsText","验证码:8888")};//对应短信内容post.setRequestBody(data);client.executeMethod(post);Header[] headers = post.getResponseHeaders();int statusCode = post.getStatusCode();System.out.println("statusCode:"+statusCode);for(Header h : headers){System.out.println(h.toString());}String result = new String(post.getResponseBodyAsString().getBytes("gbk"));System.out.println(result); //打印返回消息状态post.releaseConnection();}}

接口安全密钥的查看(默认一般相同)

可能出现下面问题

产生原因主要是jdk版本的问题,我是将jdk的版本修改成jdk1.8,就没有这个报错了。

修改jdk版本的方法,参考下面链接

/zeal9s/article/details/85090545

最终结果是对应的手机会收到像上面类似的短信。但是,这个网站发送短信存在一些问题,就是发送完短信后,可能收不到对应的短信,不知道是什么原因。

五、小结

本过程主要是对于调用API的一个认识。在使用API,来实现一些相关服务,编程上会简化很多。当然,也是对于Java基本内容的一个回顾,主要包含对于string类的相关使用。对于自定义发送短信验证码,找了好多相关的第三方工具所提供的短信服务,不是短信签名过不了审核就是注册后需要相关的认证材料。只不过使用网建这个在发送短信上,存在一些问题。

六、参考资料

Java 实现手机发送短信验证码

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。