2023年7月31日发(作者:)

java⼿机验证码_Java实现发送短信验证码功能⼀个发送短信验证码的功能,使⽤的是信易通的短信平台接⼝,然后在Java中使⽤HttpClient模拟POST请求或者GET请求(看短信平台要求,⼀般的情况下都是POST请求),调⽤短信平台提供的接⼝(遵循短信平台的接⼝规范即可)。具体看代码:使⽤HttpClient的时候需要在项⽬中引⼊:这个jar包,项⽬结构:1、创建⼀个Http的模拟请求⼯具类,然后写⼀个POST⽅法或者GET⽅法/*** ⽂件说明* @Description:扩展说明* @Copyright: 2015 Inc. All right reserved* @Version: V6.0*/package ;import ption;import ;import ient;import ception;import HttpConnectionManager;import hod;import thod;/*** @Author: feizi* @Date: 2015年4⽉17⽇ 上午9:26:34* @ModifyUser: feizi* @ModifyDate: 2015年4⽉17⽇ 上午9:26:34* @Version:V6.0*/public class HttpRequestUtil {/*** HttpClient 模拟POST请求* ⽅法说明* @Discription:扩展说明* @param url* @param params* @return String* @Author: feizi* @Date: 2015年4⽉17⽇ 下午7:15:59* @ModifyUser:feizi* @ModifyDate: 2015年4⽉17⽇ 下午7:15:59*/public static String postRequest(String url, Map params) {//构造HttpClient的实例HttpClient httpClient = new HttpClient();//创建POST⽅法的实例PostMethod postMethod = new PostMethod(url);//设置请求头信息uestHeader("Connection", "close");//添加参数for ( entry : et()) {ameter((), ue());}//使⽤系统提供的默认的恢复策略,设置请求重试处理,⽤的是默认的重试处理:请求三次ams().setBooleanParameter("-continue", false);//接收处理结果String result = null;try {//执⾏Http Post请求eMethod(postMethod);//返回处理结果result = ponseBodyAsString();} catch (HttpException e) {// 发⽣致命的异常,可能是协议不对或者返回的内容有问题n("请检查输⼊的URL!");tackTrace();} catch (IOException e) {// 发⽣⽹络异常n("发⽣⽹络异常!");tackTrace();} finally {//释放链接eConnection();//关闭HttpClient实例if (httpClient != null) {((SimpleHttpConnectionManager) pConnectionManager()).shutdown();httpClient = null;}}return result;}/*** HttpClient 模拟GET请求* ⽅法说明* @Discription:扩展说明* @param url* @param params* @return String* @Author: feizi* @Date: 2015年4⽉17⽇ 下午7:15:28* @ModifyUser:feizi* @ModifyDate: 2015年4⽉17⽇ 下午7:15:28*/public static String getRequest(String url, Map params) {//构造HttpClient实例HttpClient client = new HttpClient();//拼接参数String paramStr = "";for (String key : ()) {paramStr = paramStr + "&" + key + "=" + (key);}paramStr = ing(1);//创建GET⽅法的实例GetMethod method = new GetMethod(url + "?" + paramStr);//接收返回结果String result = null;try {//执⾏HTTP GET⽅法请求eMethod(method);//返回处理结果result = ponseBodyAsString();} catch (HttpException e) {// 发⽣致命的异常,可能是协议不对或者返回的内容有问题n("请检查输⼊的URL!");tackTrace();} catch (IOException e) {// 发⽣⽹络异常n("发⽣⽹络异常!");tackTrace();} finally {//释放链接eConnection();//关闭HttpClient实例if (client != null) {((SimpleHttpConnectionManager) pConnectionManager()).shutdown();client = null;}}return result;}}2、在创建⼀个类,⽣成验证码,然后传递相应的参数(不同的短信平台接⼝会有不同的参数要求,这个⼀般短信平台提供的接⼝⽂档中都会有的,直接看⽂档然后按要求来即可)/*** ⽂件说明* @Description:扩展说明* @Copyright: 2015 Inc. All right reserved* @Version: V6.0*/package ;import oder;import p;import ;/*** @Author: feizi* @Date: 2015年4⽉17⽇ 上午9:24:48* @ModifyUser: feizi* @ModifyDate: 2015年4⽉17⽇ 上午9:24:48* @Version:V6.0*/public class SendMsgUtil {/*** 发送短信消息* ⽅法说明* @Discription:扩展说明* @param phones* @param content* @return* @return String* @Author: feizi* @Date: 2015年4⽉17⽇ 下午7:18:08* @ModifyUser:feizi* @ModifyDate: 2015年4⽉17⽇ 下午7:18:08*/@SuppressWarnings("deprecation")public static String sendMsg(String phones,String content){//短信接⼝URL提交地址String url = "短信接⼝URL提交地址";Map params = new HashMap();("zh", "⽤户账号");("mm", "⽤户密码");("dxlbid", "短信类别编号");("extno", "扩展编号");//⼿机号码,多个号码使⽤英⽂逗号进⾏分割("hm", phones);//将短信内容进⾏URLEncoder编码("nr", (content));return uest(url, params);}/*** 随机⽣成6位随机验证码* ⽅法说明* @Discription:扩展说明* @return* @return String* @Author: feizi* @Date: 2015年4⽉17⽇ 下午7:19:02* @ModifyUser:feizi* @ModifyDate: 2015年4⽉17⽇ 下午7:19:02*/public static String createRandomVcode(){//验证码String vcode = "";for (int i = 0; i < 6; i++) {vcode = vcode + (int)(() * 9);}return vcode;}/*** 测试* ⽅法说明* @Discription:扩展说明* @param args* @return void* @Author: feizi* @Date: 2015年4⽉17⽇ 下午7:26:36* @ModifyUser:feizi* @ModifyDate: 2015年4⽉17⽇ 下午7:26:36*/public static void main(String[] args) {// n(RandomVcode());// n("&ecb=12".substring(1));n(sendMsg(",", "尊敬的⽤户,您的验证码为" +RandomVcode() + ",有效期为60秒,如有疑虑请详询400-069-2886(客服电话)【XXX中⼼】"));}}然后执⾏⼀下,⼀般的情况下参数传递正确,按照接⼝⽂档的规范来操作的话,都会发送成功的,⼿机都能收到验证码的,然后可能会出现的问题就是:发送的短信内容有可能会出现中⽂乱码,然后就会发送不成功,按照短信平台的要求进⾏相应的编码即可。⼀般都会是UTF-8编码。以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持脚本之家。

2023年7月31日发(作者:)

java⼿机验证码_Java实现发送短信验证码功能⼀个发送短信验证码的功能,使⽤的是信易通的短信平台接⼝,然后在Java中使⽤HttpClient模拟POST请求或者GET请求(看短信平台要求,⼀般的情况下都是POST请求),调⽤短信平台提供的接⼝(遵循短信平台的接⼝规范即可)。具体看代码:使⽤HttpClient的时候需要在项⽬中引⼊:这个jar包,项⽬结构:1、创建⼀个Http的模拟请求⼯具类,然后写⼀个POST⽅法或者GET⽅法/*** ⽂件说明* @Description:扩展说明* @Copyright: 2015 Inc. All right reserved* @Version: V6.0*/package ;import ption;import ;import ient;import ception;import HttpConnectionManager;import hod;import thod;/*** @Author: feizi* @Date: 2015年4⽉17⽇ 上午9:26:34* @ModifyUser: feizi* @ModifyDate: 2015年4⽉17⽇ 上午9:26:34* @Version:V6.0*/public class HttpRequestUtil {/*** HttpClient 模拟POST请求* ⽅法说明* @Discription:扩展说明* @param url* @param params* @return String* @Author: feizi* @Date: 2015年4⽉17⽇ 下午7:15:59* @ModifyUser:feizi* @ModifyDate: 2015年4⽉17⽇ 下午7:15:59*/public static String postRequest(String url, Map params) {//构造HttpClient的实例HttpClient httpClient = new HttpClient();//创建POST⽅法的实例PostMethod postMethod = new PostMethod(url);//设置请求头信息uestHeader("Connection", "close");//添加参数for ( entry : et()) {ameter((), ue());}//使⽤系统提供的默认的恢复策略,设置请求重试处理,⽤的是默认的重试处理:请求三次ams().setBooleanParameter("-continue", false);//接收处理结果String result = null;try {//执⾏Http Post请求eMethod(postMethod);//返回处理结果result = ponseBodyAsString();} catch (HttpException e) {// 发⽣致命的异常,可能是协议不对或者返回的内容有问题n("请检查输⼊的URL!");tackTrace();} catch (IOException e) {// 发⽣⽹络异常n("发⽣⽹络异常!");tackTrace();} finally {//释放链接eConnection();//关闭HttpClient实例if (httpClient != null) {((SimpleHttpConnectionManager) pConnectionManager()).shutdown();httpClient = null;}}return result;}/*** HttpClient 模拟GET请求* ⽅法说明* @Discription:扩展说明* @param url* @param params* @return String* @Author: feizi* @Date: 2015年4⽉17⽇ 下午7:15:28* @ModifyUser:feizi* @ModifyDate: 2015年4⽉17⽇ 下午7:15:28*/public static String getRequest(String url, Map params) {//构造HttpClient实例HttpClient client = new HttpClient();//拼接参数String paramStr = "";for (String key : ()) {paramStr = paramStr + "&" + key + "=" + (key);}paramStr = ing(1);//创建GET⽅法的实例GetMethod method = new GetMethod(url + "?" + paramStr);//接收返回结果String result = null;try {//执⾏HTTP GET⽅法请求eMethod(method);//返回处理结果result = ponseBodyAsString();} catch (HttpException e) {// 发⽣致命的异常,可能是协议不对或者返回的内容有问题n("请检查输⼊的URL!");tackTrace();} catch (IOException e) {// 发⽣⽹络异常n("发⽣⽹络异常!");tackTrace();} finally {//释放链接eConnection();//关闭HttpClient实例if (client != null) {((SimpleHttpConnectionManager) pConnectionManager()).shutdown();client = null;}}return result;}}2、在创建⼀个类,⽣成验证码,然后传递相应的参数(不同的短信平台接⼝会有不同的参数要求,这个⼀般短信平台提供的接⼝⽂档中都会有的,直接看⽂档然后按要求来即可)/*** ⽂件说明* @Description:扩展说明* @Copyright: 2015 Inc. All right reserved* @Version: V6.0*/package ;import oder;import p;import ;/*** @Author: feizi* @Date: 2015年4⽉17⽇ 上午9:24:48* @ModifyUser: feizi* @ModifyDate: 2015年4⽉17⽇ 上午9:24:48* @Version:V6.0*/public class SendMsgUtil {/*** 发送短信消息* ⽅法说明* @Discription:扩展说明* @param phones* @param content* @return* @return String* @Author: feizi* @Date: 2015年4⽉17⽇ 下午7:18:08* @ModifyUser:feizi* @ModifyDate: 2015年4⽉17⽇ 下午7:18:08*/@SuppressWarnings("deprecation")public static String sendMsg(String phones,String content){//短信接⼝URL提交地址String url = "短信接⼝URL提交地址";Map params = new HashMap();("zh", "⽤户账号");("mm", "⽤户密码");("dxlbid", "短信类别编号");("extno", "扩展编号");//⼿机号码,多个号码使⽤英⽂逗号进⾏分割("hm", phones);//将短信内容进⾏URLEncoder编码("nr", (content));return uest(url, params);}/*** 随机⽣成6位随机验证码* ⽅法说明* @Discription:扩展说明* @return* @return String* @Author: feizi* @Date: 2015年4⽉17⽇ 下午7:19:02* @ModifyUser:feizi* @ModifyDate: 2015年4⽉17⽇ 下午7:19:02*/public static String createRandomVcode(){//验证码String vcode = "";for (int i = 0; i < 6; i++) {vcode = vcode + (int)(() * 9);}return vcode;}/*** 测试* ⽅法说明* @Discription:扩展说明* @param args* @return void* @Author: feizi* @Date: 2015年4⽉17⽇ 下午7:26:36* @ModifyUser:feizi* @ModifyDate: 2015年4⽉17⽇ 下午7:26:36*/public static void main(String[] args) {// n(RandomVcode());// n("&ecb=12".substring(1));n(sendMsg(",", "尊敬的⽤户,您的验证码为" +RandomVcode() + ",有效期为60秒,如有疑虑请详询400-069-2886(客服电话)【XXX中⼼】"));}}然后执⾏⼀下,⼀般的情况下参数传递正确,按照接⼝⽂档的规范来操作的话,都会发送成功的,⼿机都能收到验证码的,然后可能会出现的问题就是:发送的短信内容有可能会出现中⽂乱码,然后就会发送不成功,按照短信平台的要求进⾏相应的编码即可。⼀般都会是UTF-8编码。以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持脚本之家。