四步操作简单上手网易短信验证码

说到短信验证码Api接口有很多,比如阿里云,聚合,云之讯,华信等。原理基本上相同,所以我们在项目开发的时候用其一必知用其二。

一、创建网易云短信应用

获取开发者的App Key 和 App Secret

四步操作简单上手网易短信验证码_第1张图片

开通短信验证码功能
四步操作简单上手网易短信验证码_第2张图片

点击短信模板管理,编辑自己喜欢的短信内容。默认是语音验证码,这里注意一下项目开发中需要模板ID 。可以编辑验证码的有效时间,手机号码的次数
四步操作简单上手网易短信验证码_第3张图片

二、了解开发者接口说明

  1. 请求路径

    POST https://api.netease.im/sms/sendcode.action HTTP/1.1

  2. 请求参数
    四步操作简单上手网易短信验证码_第4张图片

  3. curl请求

curl -X POST -H "AppKey: go9dnk49bkd9jd9vmel1kglw0803mgq3" -H "CurTime: 1443592222" -H "CheckSum: 9e9db3b6c9abb2e1962cf3e6f7316fcc55583f86" -H "Nonce: 4tgggergigwow323t23t" -H "Content-Type: application/x-www-form-urlencoded" -d 'mobile=13812345678&code=1234' 'https://api.netease.im/sms/verifycode.action'

设置http头部信息。

三、代码应用

这里我采用springboot搭建的web环境,下面是一些配置静态常量

 //发送验证码的请求路径URL
    public static final String
            SERVER_URL="https://api.netease.im/sms/sendcode.action";
    //网易云信分配的账号,请替换你在管理后台应用下申请的Appkey
    public static final String
            APP_KEY="974d1e11681a9b464。。。。。";
    //网易云信分配的密钥,请替换你在管理后台应用下申请的appSecret
    public static final String APP_SECRET="8d56ab。。。。";

    //网易云信短信验证码长度
    public static final String CODELEN="6";

    //网易云信短信验证码模板
    public static final String TEMPLATEID="401。。。";

下面是获取验证码的接口代码

 @ApiOperation("获取手机验证码")
    @PostMapping("/getcode")
    public void getCode(@ApiParam("手机号码") @RequestParam String phone, HttpServletResponse response) {
        /*
         * 现在 DefaultHttpClient已经过时了
         * DefaultHttpClient继承AbstractHttpClient
         * AbstractHttpClient继承CloseableHttpClient
         * CloseableHttpClient通过HttpClients的createDefault方法创建
         */
        CloseableHttpClient httpclient = HttpClients.createDefault();
        //post请求
        HttpPost httpPost = new HttpPost(Content.SERVER_URL);
        //时间戳
        String curTime = String.valueOf((new Date()).getTime() / 1000L);
        //生产短信验证码
        String code = IDUtil.generateSmsCode();

        /*
         * 参考计算CheckSum的java代码,在上述文档的参数列表中,有CheckSum的计算文档示例
         */
        String checkSum = CheckSumBuilder.getCheckSum(Content.APP_SECRET, code, curTime);

        // 设置请求的header
        httpPost.addHeader("AppKey", Content.APP_KEY);
        httpPost.addHeader("Nonce", code);
        httpPost.addHeader("CurTime", curTime);
        httpPost.addHeader("CheckSum", checkSum);
        httpPost.addHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");

        // 设置请求的的参数,requestBody参数
        List nvps = new ArrayList();
        /*
         * 1.如果是模板短信,请注意参数mobile是有s的,详细参数配置请参考“发送模板短信文档”
         * 2.参数格式是jsonArray的格式,例如 "['13888888888','13666666666']"
         * 3.params是根据你模板里面有几个参数,那里面的参数也是jsonArray格式
         */
        nvps.add(new BasicNameValuePair("templateid", Content.TEMPLATEID));
        nvps.add(new BasicNameValuePair("mobile", phone));
        nvps.add(new BasicNameValuePair("codeLen", Content.CODELEN));

        CloseableHttpResponse responsecode=null;
        try {
            //设置编码格式
            httpPost.setEntity(new UrlEncodedFormEntity(nvps, "utf-8"));
            //执行请求并返回CloseableHttpResponse
            responsecode = httpclient.execute(httpPost);
            //获取返回结果
            HttpEntity entity = responsecode.getEntity();
            if (entity != null) {
                String result = EntityUtils.toString(entity, "UTF-8");
                //直接返回json字符串给客户端验证
                renderJson(response,result);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            if(responsecode != null){
                try {
                    responsecode.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(httpclient != null){
                try {
                    httpclient.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

四、测试代码

这里用postman模拟请求短信验证码

四步操作简单上手网易短信验证码_第5张图片

手机获取的短信验证码

四步操作简单上手网易短信验证码_第6张图片

你可能感兴趣的:(web)