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

如何实现短信验证码的发送

一、基础知识补充

1、编码

2、URL

3、字节流与字符流

二、短信验证码编程实现

一、基础知识补充

1、编码

常见的编码:UTF-8 GBK Unicode GB2312 、、、

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

1、通过设置,从而设置该编写工具的编译环境。

2、通过代码对内容进行编码,从而达到满足当前环境的标准

个人小tip:

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

代码实现

假设我们这里需要将文字转化为 UTF-8,可以通过这样的编程实现其编码的实现

String pare = URLEncoder.encode("你好","UTF-8");

1

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 元素位置 。

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

3、字节流与字符流

字节流

字节流就是在读取的时候,读到一个字节就返回一个字节。字节流处理单元为 1 个字 节,分别有操作字节和字节数组。字节流可以处理所有类型数据,如:MP3、AVI视频文件、图片、歌曲使用字节流就比较好。字节流主要是操作 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提供了 Reader、Writer两个专门操作字符流的类。

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);

}

}

【实现结果】

在这里插入图片描述在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值