关于手机号注册,发送验证码功能的实现

1.所用的服务器是阿里云的

所需相关jar包

aliyun-java-sdk-core-3.3.1

aliyun-java-sdk-dysmsapi-1.0.0

相关jar可以在阿里云的官网上下载

2.具体流程

①前台通过触发后台的发送短信的功能,需要传递过来用户的手机号(ajax什么都行)。

②正式的后台代码,这里返回前台的是否发送成功,比较简单的一个demo,建议用之前先看看官网的api文档和demo。

   @ResponseBody
    @RequestMapping(value="api-user-sendMess")
    public String sendMess(@RequestParam(value="phone")String phone,HttpSession session){
        
                // 设置超时时间-可自行调整
                System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
                System.setProperty("sun.net.client.defaultReadTimeout", "10000");
                //初始化ascClient需要的几个参数
                final String product = "Dysmsapi";//短信API产品名称(短信产品名固定,无需修改)
                final String domain = "dysmsapi.aliyuncs.com";//短信API产品域名(接口地址固定,无需修改)
                // 替换成你的AK
                final String accessKeyId = "xxx";// 你的accessKeyId
                final String accessKeySecret = "xxx";// 你的accessKeySecret
                //初始化ascClient,暂时不支持多region(请勿修改)
                IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId,
                accessKeySecret);
                try {
                    DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
                } catch (ClientException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                IAcsClient acsClient = new DefaultAcsClient(profile);
                 //组装请求对象
                SendSmsRequest request = new SendSmsRequest();
                //使用post提交
                request.setMethod(MethodType.POST);
                // 必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为20个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式
                request.setPhoneNumbers("xxx");
                // 必填:短信签名-可在短信控制台中找到
                request.setSignName("xxx");
                // 必填:短信模板-可在短信控制台中找到//SMS_112780058//13704098349
                request.setTemplateCode("SMS_112780058");
                // 可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
                // 可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
                
                int x = new Random().nextInt(1000000);
          //参数为json字符串形式,其中key值为固定的 name code 不可变 request.setTemplateParam(
"{\"name\":\"xxx\",\"code\":\"" + x + "\"}"); request.setSmsUpExtendCode("66666"); // 请求失败这里会抛ClientException异常 SendSmsResponse sendSmsResponse=null; try { sendSmsResponse = acsClient.getAcsResponse(request); } catch (ServerException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClientException e) { // TODO Auto-generated catch block e.printStackTrace(); } String result=null; if (sendSmsResponse.getCode() != null && sendSmsResponse.getCode().equals("OK")) { // 请求成功 result= "1"; session.setAttribute("code", x); }else if(sendSmsResponse.getCode().equals("isv.BUSINESS_LIMIT_CONTROL")){ result= "0"; session.setAttribute("code", ""); } //错误提示sendSmsResponse.getCode() return result; }

 

转载于:https://www.cnblogs.com/chenchengyi/p/7879182.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值