国际验证码接口供应商说说Java项目中短信验证码登录流程详细步骤
                
                    2020-08-18 00:00:00   
                    来源:www.jzyyun.com   
                    点击:3774   
                    喜欢:0
                
                  国际验证码接口供应商说说Java项目中短信验证码登录流程详细步骤  1、构造手机验证码:使用random对象生成要求的随机数作为验证码,例如4位验证码:1000~9999之间随机数;  2、使用接口向短信平台发送手机号和验证码数据,然后短信平台再把验证码发送到制定手机号上,接口参数一般包括:目标手机号,随机验证码(或包含失效时间),平台接口地址,平台口令;  3、保存接口返回的信息(一般为json文本数据,然后需转换为json对象格式);  4、将手机号--验证码、操作时间存入Session中,作为后面验证使用;  5、接收用户填写的验证码及其他数据;  6、对比提交的验证码与Session中的验证码是否一致,同时判断提交动作是否在有效期内;  7、验证码正确且在有效期内,请求通过,处理相应的业务。

  一,首先添加一个jar包,工具类会用到。  <!--嘉之元的jar包-->  <dependency>  <groupId>commons-codec</groupId>  <artifactId>commons-codec</artifactId>  <version>1.11</version>  </dependency>  二、我这里只是编写一个简单的短信验证功能,要是用其他的语音验证。。。。等等需要去嘉之元官方下载文档,下面是编写的一个config文档,专门存放一些参数  二、编写http请求工具类  public class HttpUtil  {  /**  *构造通用参数timestamp、sig和respDataType  *  *return  */  public static String createCommonParam()  {  //时间戳  SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddHHmmss");  String timestamp=sdf.format(new Date());  //签名  String sig=DigestUtils.md5Hex(Config.ACCOUNT_SID+Config.AUTH_TOKEN+timestamp);  return"×tamp="+timestamp+"&sig="+sig+"&respDataType="+Config.RESP_DATA_TYPE;  }  /**  *post请求  *  *param url  *功能和操作  *param body  *要post的数据  *return  *throws IOException  */  public static String post(String url,String body)  {  System.out.println("url:"+System.lineSeparator()+url);  System.out.println("body:"+System.lineSeparator()+body);  String result="";  try  {  OutputStreamWriter out=null;  BufferedReader in=null;  URL realUrl=new URL(url);  URLConnection conn=realUrl.openConnection();  //设置连接参数  conn.setDoOutput(true);  conn.setDoInput(true);  conn.setConnectTimeout(5000);  conn.setReadTimeout(20000);  conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");  //提交数据  out=new OutputStreamWriter(conn.getOutputStream(),"UTF-8");  out.write(body);  out.flush();  //读取返回数据  in=new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));  String line="";  boolean firstLine=true;//读第一行不加换行符  while((line=in.readLine())!=null)  {  if(firstLine)  {  firstLine=false;  }else  {  result+=System.lineSeparator();  }  result+=line;  }  }catch(Exception e)  {  e.printStackTrace();  }  return result;  }  /**  *回调测试工具方法  *  *param url  *param reqStr  *return  */  public static String postHuiDiao(String url,String body)  {  String result="";  try  {  OutputStreamWriter out=null;  BufferedReader in=null;  URL realUrl=new URL(url);  URLConnection conn=realUrl.openConnection();  //设置连接参数  conn.setDoOutput(true);  conn.setDoInput(true);  conn.setConnectTimeout(5000);  conn.setReadTimeout(20000);  //提交数据  out=new OutputStreamWriter(conn.getOutputStream(),"UTF-8");  out.write(body);  out.flush();  //读取返回数据  in=new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));  String line="";  boolean firstLine=true;//读第一行不加换行符  while((line=in.readLine())!=null)  {  if(firstLine)  {  firstLine=false;  }else  {  result+=System.lineSeparator();  }  result+=line;  }  }catch(Exception e)  {  e.printStackTrace();  }  return result;  }  }  三、生成四位数的方法  public static String runNumber(){  String str="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";  StringBuilder sb=new StringBuilder(4);  for(int i=0;i<4;i++)  {  char ch=str.charAt(new Random().nextInt(str.length()));  sb.append(ch);  }  System.out.println(sb.toString());  String code=sb.toString();  return code;  }  4、执行方法execute(),便会发送成功  public class IndustrySMS  {  private static String operation="/industrySMS/sendSMS";  private static String accountSid=Config.ACCOUNT_SID;  private static String to="15342349382";  private static String smsContent="【xxxxxx】登录验证码:{"+runNumber().toString()+"},如非本人操作,请忽略此短信。";  /**  *验证码通知短信  */  public static void execute()  {  String tmpSmsContent=null;  try{  tmpSmsContent=URLEncoder.encode(smsContent,"UTF-8");  }catch(Exception e){  }  String url=Config.BASE_URL+operation;  String body="accountSid="+accountSid+"&to="+to+"&smsContent="+tmpSmsContent  +HttpUtil.createCommonParam();  //提交请求  String result=HttpUtil.post(url,body);  System.out.println("result:"+System.lineSeparator()+result);  }                
                    上一篇:群发短信可以分为哪些类型?
                    下一篇:106短信群发平台说说短信群发的好处和坏处