「java手机号码验证」java验证码验证

博主:adminadmin 2023-03-17 05:56:07 277

今天给各位分享java手机号码验证的知识,其中也会对java验证码验证进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java编程实现自定义异常判断一个手机号码的合法性

用正则判断,

 /**

     * 验证手机号码格式是否正确

     * @param mobiles

     * @return  true 表示正确  false表示不正确

     */

    public static boolean isMobileNum(String mobiles) {

        Pattern p = Pattern.compile("^((13[0-9])|(15[0-9])|(18[0-9]))\\d{8}");

        Matcher m = p.matcher(mobiles);

        return m.matches();

    }

当然手机号码好像还有17开头的,对应的正则改一下就好

"^((13[0-9])|(15[0-9])|(18[0-9])|(17[0-9]))\\d{8}"

然后在你的代码里面调用这个方法,如果结果为false,就throw new MyException(“手机号码格式不正确”)一个异常。

异常定义可以去继承Exception

/**

 * Created by Kevin on 2015/3/30.

 */

public class MyException extends Exception{

    private String msg;

    public MyException(String msg) {

        super(msg);

        this.msg = msg;

    }

    @Override

    public String getMessage() {

        return msg;

    }

}

java如何实现发送短信验证码功能?

1、创建一个Http的模拟请求工具类,然后写一个POST方法或者GET方法

/** * 文件说明 * @Description:扩展说明 * @Copyright: XXXX dreamtech.com.cn Inc. All right reserved * @Version: V6.0 */package com.demo.util; import java.io.IOException;import java.util.Map; import org.apache.commons.httpclient.HttpClient;import org.apache.commons.httpclient.HttpException;import org.apache.commons.httpclient.SimpleHttpConnectionManager;import org.apache.commons.httpclient.methods.GetMethod;import org.apache.commons.httpclient.methods.PostMethod; /** * @Author: feizi * @Date: XXXX年XX月XX日 XX:XX:XX * @ModifyUser: feizi * @ModifyDate: XXXX年XX月XX日 XX:XX:XX * @Version:V6.0 */public class HttpRequestUtil { /** * HttpClient 模拟POST请求 * 方法说明 * @Discription:扩展说明 * @param url * @param params * @return String * @Author: feizi * @Date: XXXX年XX月XX日 XX:XX:XX * @ModifyUser:feizi * @ModifyDate: XXXX年XX月XX日 XX:XX:XX */ public static String postRequest(String url, MapString, String params) { //构造HttpClient的实例 HttpClient httpClient = new HttpClient(); //创建POST方法的实例 PostMethod postMethod = new PostMethod(url); //设置请求头信息 postMethod.setRequestHeader("Connection", "close"); //添加参数 for (Map.EntryString, String entry : params.entrySet()) { postMethod.addParameter(entry.getKey(), entry.getValue()); } //使用系统提供的默认的恢复策略,设置请求重试处理,用的是默认的重试处理:请求三次 httpClient.getParams().setBooleanParameter("http.protocol.expect-continue", false); //接收处理结果 String result = null; try { //执行Http Post请求 httpClient.executeMethod(postMethod); //返回处理结果 result = postMethod.getResponseBodyAsString(); } catch (HttpException e) { // 发生致命的异常,可能是协议不对或者返回的内容有问题 System.out.println("请检查输入的URL!"); e.printStackTrace(); } catch (IOException e) { // 发生网络异常 System.out.println("发生网络异常!"); e.printStackTrace(); } finally { //释放链接 postMethod.releaseConnection(); //关闭HttpClient实例 if (httpClient != null) { ((SimpleHttpConnectionManager) httpClient.getHttpConnectionManager()).shutdown(); httpClient = null; } } return result; } /** * HttpClient 模拟GET请求 * 方法说明 * @Discription:扩展说明 * @param url * @param params * @return String * @Author: feizi * @Date: XXXX年XX月XX日 XX:XX:XX * @ModifyUser:feizi * @ModifyDate: XXXX年XX月XX日 XX:XX:XX */ public static String getRequest(String url, MapString, String params) { //构造HttpClient实例 HttpClient client = new HttpClient(); //拼接参数 String paramStr = ""; for (String key : params.keySet()) { paramStr = paramStr + "" + key + "=" + params.get(key); } paramStr = paramStr.substring(1); //创建GET方法的实例 GetMethod method = new GetMethod(url + "?" + paramStr); //接收返回结果 String result = null; try { //执行HTTP GET方法请求 client.executeMethod(method); //返回处理结果 result = method.getResponseBodyAsString(); } catch (HttpException e) { // 发生致命的异常,可能是协议不对或者返回的内容有问题 System.out.println("请检查输入的URL!"); e.printStackTrace(); } catch (IOException e) { // 发生网络异常 System.out.println("发生网络异常!"); e.printStackTrace(); } finally { //释放链接 method.releaseConnection(); //关闭HttpClient实例 if (client != null) { ((SimpleHttpConnectionManager) client.getHttpConnectionManager()).shutdown(); client = null; } } return result; }}

2、在创建一个类,生成验证码,然后传递相应的参数(不同的短信平台接口会有不同的参数要求,这个一般短信平台提供的接口文档中都会有的,直接看文档然后按要求来即可)

/** * 文件说明 * @Description:扩展说明 * @Copyright: XXXX dreamtech.com.cn Inc. All right reserved * @Version: V6.0 */package com.demo.util; import java.net.URLEncoder;import java.util.HashMap;import java.util.Map; /** * @Author: feizi * @Date: XXXX年XX月XX日 XX:XX:XX * @ModifyUser: feizi * @ModifyDate: XXXX年XX月XX日 XX:XX:XX * @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提交地址"; MapString, String params = new HashMapString, String(); params.put("zh", "用户账号"); params.put("mm", "用户密码"); params.put("dxlbid", "短信类别编号"); params.put("extno", "扩展编号"); //手机号码,多个号码使用英文逗号进行分割 params.put("hm", phones); //将短信内容进行URLEncoder编码 params.put("nr", URLEncoder.encode(content)); return HttpRequestUtil.getRequest(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)(Math.random() * 9); } return vcode; } /** * 测试 * 方法说明 * @Discription:扩展说明 * @param args * @return void * @Author: feizi * @Date: XXXX年XX月XX日 XX:XX:XX * @ModifyUser:feizi * @ModifyDate: XXXX年XX月XX日 XX:XX:XX */ public static void main(String[] args) {// System.out.println(SendMsgUtil.createRandomVcode());// System.out.println("ecb=12".substring(1)); System.out.println(sendMsg("18123456789,15123456789", "尊敬的用户,您的验证码为" + SendMsgUtil.createRandomVcode() + ",有效期为60秒,如有疑虑请详询XXX-XXX-XXXX【XXX中心】")); }

然后执行一下,一般的情况下参数传递正确,按照接口文档的规范来操作的话,都会发送成功的,手机都能收到验证码的,然后可能会出现的问题就是:发送的短信内容有可能会出现中文乱码,然后就会发送不成功,按照短信平台的要求进行相应的编码即可。一般都会是UTF-8编码。

java短信验证码如何验证

先创建一个验证码,通过短信代理发送到用户指定的手机,待用户提交后做对比,看验证码是否一致。

整体流程:

用户输入手机号码,点击获取验证码

服务器创建验证码,并通过短信代理商发送到用户手机

用户查看验证码,输入提交

服务器进行确认,反馈成功或者失败。

给手机号发送验证码

建一个utlls

package com.itjh.util;

import org.apache.commons.httpclient.Header;

import org.apache.commons.httpclient.HttpClient;

import org.apache.commons.httpclient.NameValuePair;

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

import java.util.Random;

public class SendMessageUtil {

private static final StringSMS_Url ="";

/**

    * @param Uid SMS用户id  : lvfang123

    * @param Key 接口秘钥:SMS登录可查(非登录密码)

    * @param sendPhoneNum 短信发送目标号码

    * @param desc 短信内容

    * @return Integer(1:成功码,其他失败,具体参见注释)

*/

    public static Integersend(String Uid,String Key,String sendPhoneNum,String desc){

HttpClient client =new HttpClient();

PostMethod post =new PostMethod(SMS_Url);

post.addRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=gbk");// 在头文件中设置转码

        //设置参数

        NameValuePair[]data = {

new NameValuePair("Uid", Uid),

new NameValuePair("Key", Key),//秘钥

                new NameValuePair("smsMob", sendPhoneNum),

new NameValuePair("smsText", desc)

};

post.setRequestBody(data);

try {

client.executeMethod(post);

}catch (Exception e) {  e.printStackTrace();  }

Header[]headers =post.getResponseHeaders();

int statusCode =post.getStatusCode();

System.out.println("statusCode:" +statusCode);

for (Header h :headers) {

System.out.println(h.toString());

}

String result ="";

try {

result =new String(post.getResponseBodyAsString().getBytes("gbk"));

}catch (Exception e) {  e.printStackTrace();  }

post.releaseConnection();

return Integer.parseInt(result);

}

/**

    *  -1  没有该用户账户

    -2 接口密钥不正确 [查看密钥]不是账户登陆密码

    -21    MD5接口密钥加密不正确

    -3 短信数量不足

    -11    该用户被禁用

    -14    短信内容出现非法字符

    -4 手机号格式不正确

    -41    手机号码为空

    -42    短信内容为空

    -51    短信签名格式不正确接口签名格式为:【签名内容】

    -6 IP限制

    大于0    短信发送数量

以上作为补充

    */

    public static StringgetMessage(Integer code){

Stringmessage;

if(code 0 ) {

message ="SMS-f发送成功!短信量还有" + code +"条";

}else if(code == -1){

message ="SMS-没有该用户账户";

}else if(code == -2){

message ="SMS-接口密钥不正确";

}else if(code == -21){

message ="SMS-MD5接口密钥加密不正确";

}else if(code == -3){

message ="SMS-短信数量不足";

}else if(code == -11){

message ="SMS-该用户被禁用";

}else if(code == -14){

message ="SMS-短信内容出现非法字符";

}else if(code == -4){

message ="SMS-手机号格式不正确";

}else if(code == -41){

message ="SMS-手机号码为空";

}else if(code == -42){

message ="SMS-短信内容为空";

}else if(code == -51){

message ="SMS-短信签名格式不正确接口签名格式为:【签名内容】";

}else if(code == -6){

message ="SMS-IP限制";

}else{

message ="其他错误";

}

return message;

}

/**

    * 随机生成6位验证码

    * @return

*/

    public static StringgetRandomCode(Integer code){

Randomrandom =new Random();

StringBufferresult=new StringBuffer();

for (int i=0;i

result.append(random.nextInt(10));

}

return result.toString();

}

public static StringgetRandomCode(){

Randomrandom =new Random();

String result="";

for (int i=0;i6;i++){

result+=random.nextInt(10);

}

return result;

}

public void testSendMessage(){

//        SendMessageUtil.send("SMS账户","接口秘钥","目标号码","发送内容");

//第一个名称,密钥,手机号

        SendMessageUtil.send("jimingyu","d41d8cd98f00b204e980","15226921418","验证码:"+getRandomCode(6));

IntegerresultCode =1;

System.out.println(SendMessageUtil.getMessage(resultCode));

}

}

配置文件pom.xml

commons-logging

commons-logging

1.1.1

commons-codec

commons-codec

1.4

commons-httpclient

commons-httpclient

3.0.1

获取发送短信密钥网址

关于java手机号码验证和java验证码验证的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。