「java手机号码验证」java验证码验证
今天给各位分享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验证码验证的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。