前言

大家好,今天给大家带来短信验证教给大家玩玩。 现在的网站获得APP基本都有短信验证码登录,感觉这个功能高大上。没错它就是高大上。 这次演示的示例使用SSH框架做的Java项目来演示,后期各位伙伴学会了再把这个功能加到自己的项目中。

准备工作

编辑器:eclipse, 手机一台, 电脑一台而且还要带网。

实践

现在先介绍一个网站给大家,就是中国网建官网。首先我们进入这个网址。我们与短信验证的故事从这个发源……。

首先先注册

短信登录springsecurityoauth2_apache

按信息填写注册,特别注意短信验证码就是你这个账号的密码,注册成功之后可以修改的。然后登陆

短信登录springsecurityoauth2_验证码_02

注意:这里面有个手机验证码发过来,这个验证码就是你这个账号的简易密码。后期伙伴根据自己需要再修改吧。输入完验证码之后就成功登录进来,新注册用户有免费的5条短信额。我这个是已经发过一条的了,所以是4条。

短信登录springsecurityoauth2_post请求_03

回到正题,点击《用户信息修改》填写这些信息,然后保存信息。还有需要改密码的,在这个上面就可以改了,旧密码就是刚注册的那个验证码哦。

短信登录springsecurityoauth2_短信验证_04

点击《修改短信秘钥》,一般情况是不需要修改的。

短信登录springsecurityoauth2_验证码_05

点击《短信API接口》跳转页面

短信登录springsecurityoauth2_post请求_06

然后往下来,大概拉到这个地方

短信登录springsecurityoauth2_验证码_07

我们这次使用Java示例,伙伴们可根据需要选示例哈! 然后下载这三个jar包

短信登录springsecurityoauth2_短信验证_08

因为我这次是放在SSH框架的项目里,所以才会有那么多包。新建一个类,放在一个这个包里,jar包就放在lib里面就可以了。

短信登录springsecurityoauth2_apache_09

源码

package com.bdqn.it.util;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;

public class SmsUtil {
	
	public static void main(String[] args) {
		// 各位伙伴,这里是接收验证码的手机号和生成的随机验证码,本次直接输入来做测试
		int n = SmsUtil.send("接收的手机号码", "验证码:666666");
		System.out.println(n);
	}

	public static int send(String mob, String msg){

		try {
			// 模仿浏览器对外发送请求获取响应
			HttpClient client = new HttpClient();
			
			// 制造一个post请求
			PostMethod post = new PostMethod("http://utf8.api.smschinese.cn");
			
			// 在头文件中设置转码,等效于写了一个form表单 --> <form action="http://utf8.api...." 
			// enctype="application/x-www-form-urlencoded;charset=utf-8">
			post.addRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
			
			// 还有这里uid是你的用户名,key是短信秘钥,都是字符串格式
			NameValuePair[] data = { new NameValuePair("Uid", 你的用户名), 
									new NameValuePair("Key", 你的短信秘钥),
									new NameValuePair("smsMob", mob), 
									new NameValuePair("smsText", msg)};
			
			// 把四个参数放到post请求中,准备提交
			post.setRequestBody(data);

									
			client.executeMethod(post);
			
			// 从post请求中请求完之后返回结果
			String result = new String(post.getResponseBodyAsString().getBytes("utf-8"));
			int r = Integer.parseInt(result);
			
			// 关闭连接
			post.releaseConnection();

			// 返回状态值
			return r;
		} catch (Exception e) {
			throw new RuntimeException("短信发送失败", e);
		}
	}
}

然后运行,控制台输出1说明成功发送,如果是其他数字的话,各位伙伴可以去《短信API接口》那个页面查看相对应的返回状态码

短信登录springsecurityoauth2_验证码_10

短信登录springsecurityoauth2_短信验证_11