实现短信验证码的发送[JAVA]

一、基础知识补充

1、编码

常见的编码:UTF-8 GBK Unicode GB2312 、、、
在这里插入图片描述 编码有什么用呢?相信大家在编程程序的时候,经常出现乱码的情况,而这就是编译环境中的编码与当前的文字编码不同,从而导致的。那么出现这种情况该如何解决呢?这里提供两种思路,如果遇到这种情况,大家自行进行修改。

1、通过设置,从而设置该编写工具的编译环境。
2、通过代码对内容进行编码,从而达到满足当前环境的标准
个人小tip

建议不要动编译环境中的编码设置,除非当前满足真的无法满足项目的绝大多数编码情况。尽量使用代码进行转化)

代码实现
假设我们这里需要将文字转化为 UTF-8,可以通过这样的编程实现其编码的实现
String pare = URLEncoder.encode("你好","UTF-8");

2、URL

【菜鸟教程】对URL的定义:

URL(Uniform Resource Locator)中文名为统一资源定位符,有时也被俗称为网页地址。表示为互联网上的资源,如网页或者FTP地址。

其实URL可以分为以下几个部分:
1、协议为(protocol):http
2、主机为(host:port):www.runoob.com
3、端口号为(port): 80 ,以上URL实例并未指定端口,因为 HTTP 协议默认的端口号为 80。
4、文件路径为(path):/index.html
5、请求参数(query):language=cn
6、 定位位置(fragment):j2se,定位到网页中 id 属性为 j2se 的 HTML 元素位置 。

比如:http://www.runoob.com/index?language=cn#j2se

java.net包中定义了URL类,我们使用该类用来处理有关URL的内容。同时java.net.URL提供了丰富的URL构建方式,并可以通过java.net.URL来获取资源。

URL url = new URL("https://api.jisuapi.com/sms/send?appkey=62958a3a6ef3c56d&mobile=电话号码&content="+content);

要实现短信验证功能,这里我们需要短信的发送AIP:https://api.jisuapi.com/sms/send【此API已失效】这里给出其相关参数与短信API,只是提供供学习。
在这里插入图片描述

3、字节流与字符流

字节流

字节流就是在读取的时候,读到一个字节就返回一个字节。字节流处理单元为 1 个字 节,分别有操作字节和字节数组。字节流可以处理所有类型数据,如:MP3AVI视频文件、图片、歌曲使用字节流就比较好。字节流主要是操作 byte类型数据,以 byte数组为准。

主要操作类就是OutputStream,InputStream

    import java.io.File;    
    import java.io.FileWriter;    
    import java.io.Writer;    
    public class WriterDemo {   
    	// 异常抛出,不处理     
        public static void main(String[] args) throws Exception { 
            // 第1步:使用File类找到一个文件
            // 声明File 对象        
            File f = new File("d:" + File.separator + "txt.txt");
            // 第2步:准备好一个输出的对象 通过子类实例化父类对象    
            Writer out = null;                 
    		// 通过对象多态性进行实例化      
            out = new FileWriter(f);            
            // 第3步:准备一个字符串   
            String str = "Hello World!!!";      
    		// 进行写操作   
            out.write(str);                    
    		// 将内容输出    
            // 第4步:关闭输出流(此时没有关闭)
            out.close();
            //如果不关闭字节流,那么一样可以获取文本中的数据,因为它没有缓冲区              
        }    
    }   
字符流

字符流处理的单元为 2 个字节的 Unicode字符,分别有操作字符、字符数组或字符串,所以字符流是由 Java虚拟机将字节转化为 2 个字节的 Unicode字符为单位的字符而成的, 所以它对多国语言支持性比较好!如果是关系到中文(文本)的,用字符流好点。在程序中一个字符等于两个字节,只要是处理纯文本数据,就要优先考虑使用字符流,除此之外都用字节流。同时字符流使用了字节流读到一个或多个字节(中文对应的字节数是两个,在 UTF-8码表中是 3 个字节)时,会先去查指定的编码表,将查到的字符返回。字符流使用了缓冲区,而字节流没有使用缓冲区,如果当在操作字符流时,没有关闭字符流,那么数据将放在缓冲区无法读取出来。需要关闭之后才能获取数据。

java提供了 ReaderWriter两个专门操作字符流的类。

    import java.io.File;    
    import java.io.FileWriter;    
    import java.io.Writer;    
    public class WriterDemo04 {    
    	// 异常抛出不处理   
        public static void main(String[] args) throws Exception {  
            // 第1步:使用File类找到一个文件    
            // 声明File对象    
            File f = new File("d:" + File.separator + "test.txt");
            // 第2步:准备好一个输出的对象  通过子类实例化父类对象    
            Writer out = null;                   
    		// 通过对象多态性进行实例化
            out = new FileWriter(f); 
            // 第3步:准备一个字符串    
            String str = "Hello World!!!";      
    		// 进行写操作
            out.write(str);                    
    		// 将内容输出    
            out.flush();                       
    		// 强制性清空缓冲区中的内容    
            // 第4步:关闭输出流
            out.close();
            //如果不关闭字符流,那么缓冲区中的数据无法获取到                 
        }    
    }   

二、短信验证码编程实现

package test;

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 test{
    public static void main(String[] args) throws IOException{
        // 实现步骤
        // 1、将中文参数转换为编码进行处理
        //此处根据各自开通的短信API的content内容进行填写
        String pare = URLEncoder.encode("恭喜你,短信发送成功!验证码是:666666 。如非本人操作,请忽略本短信!","UTF-8");
        // 2、创建一个URL类的对象
        //根据各自开通的短信API进行填写此处的API URL
        URL url = new URL("https://api.jisuapi.com/sms/send?appkey=62958a3a6ef3a56d&mobile=电话号码&content="+pare);
        // 3、通过URL类的队长url的打开网络连接的功能,来打开网络连接
        // 并得到一个URLConnection连接的对象 conn
        URLConnection conn = url.openConnection();
        // 4、通过连接对象conn,得到用于读取网页内容的字节流is,
        InputStream is = conn.getInputStream();
        //5、将上述的字节流is,装饰为字符输入流,将字符输入流再装饰为带有缓冲功能,能一次读取一行的字符输入流br
        BufferedReader br = new BufferedReader(new InputStreamReader(is,"UTF-8"));
        // 6、通过字符输入流br,读取一行数据,并将内容赋值给变量text
        String text = br.readLine();
        // 7、将读取到的内容,展示到控制台
        System.out.print(text);
    }
}

【实现结果】
在这里插入图片描述在这里插入图片描述

如果觉得不错,希望能点赞支持,让小Yang动力满满继续写出好文章。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值