您的当前位置:主页 > 常见问题

合作客户

方太
金伯利

联系我们

0371-86687083
地址:郑州市管城区紫金山路兴达国贸1802室
电话:0371-86687083

常见问题

国际验证码接口供应商说说Java项目中短信验证码登录流程详细步骤

2020-08-18 00:00:00    来源:www.jzyyun.com    点击:2328    喜欢:0

  国际验证码接口供应商说说Java项目中短信验证码登录流程详细步骤

  1、构造手机验证码:使用random对象生成要求的随机数作为验证码,例如4位验证码:1000~9999之间随机数;

  2、使用接口向短信平台发送手机号和验证码数据,然后短信平台再把验证码发送到制定手机号上,接口参数一般包括:目标手机号,随机验证码(或包含失效时间),平台接口地址,平台口令;

  3、保存接口返回的信息(一般为json文本数据,然后需转换为json对象格式);

  4、将手机号--验证码、操作时间存入Session中,作为后面验证使用;

  5、接收用户填写的验证码及其他数据;

  6、对比提交的验证码与Session中的验证码是否一致,同时判断提交动作是否在有效期内;

  7、验证码正确且在有效期内,请求通过,处理相应的业务。


国际验证码接口供应商说说Java项目中短信验证码登录流程详细步骤


  一,首先添加一个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"&timestamp="+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短信群发平台说说短信群发的好处和坏处


  • 服务咨询 0371-86687083
  • 一对一贵宾级服务
  • 7X24小时技术保障
Copyright © 2013-2017. All Rights Reserved. 郑州嘉之元计算机科技有限公司 www.jzyyun.com 版权所有 | 增值电信业务经营许可证:B2-20194910| 备案号: 豫ICP备15030919-2号
营业执照
图片
[网站地图] [联系我们]
本公司主要从事:短信验证码,短信接口,短信平台,群发短信,短信群发 sitemap:sitemap.txt|

豫公网安备41010402002418号

点击这里给我发消息