用SendCloud发送短信验证码

翻译 2015年11月20日 16:27:00


String smsKey = "*****";
            String url = "http://xxxxx";
            String vcode = createRandomVcode();
//            System.out.println("验证码:" + vcode);
            // 填充参数
            Map<String, String> params = new HashMap<String, String>();
            params.put("smsUser", "xxx");
            params.put("templateId", "1");
            params.put("phone", “1562566155256”);
            params.put("vars", "{\"code\":\"" + vcode + "\"}");
            // 对参数进行排序
            Map<String, String> sortedMap = new TreeMap<String, String>(new Comparator<String>() {
                @Override
                public int compare(String arg0, String arg1) {
                    // 忽略大小写
                    return arg0.compareToIgnoreCase(arg1);
                }
            });
            sortedMap.putAll(params);
            // 计算签名
            StringBuilder sb = new StringBuilder();
            sb.append(smsKey).append("&");
            for (String s : sortedMap.keySet()) {
                sb.append(String.format("%s=%s&", s, sortedMap.get(s)));
            }
            sb.append(smsKey);
            String sig = DigestUtils.md5Hex(sb.toString());
            // 将所有参数和签名添加到post请求参数数组里
            List<BasicNameValuePair> postparams = new ArrayList<>();
            for (String s : sortedMap.keySet()) {
                postparams.add(new BasicNameValuePair(s, sortedMap.get(s)));
            }
            postparams.add(new BasicNameValuePair("signature", sig));
            HttpPost httpPost = new HttpPost(url);
            try {
                httpPost.setEntity(new UrlEncodedFormEntity(postparams, "utf8"));
                DefaultHttpClient httpclient = new DefaultHttpClient();

                httpclient.getParams().setIntParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 3000);
                httpclient.getParams().setIntParameter(CoreConnectionPNames.SO_TIMEOUT, 100000);
                HttpResponse response = httpclient.execute(httpPost);

                HttpEntity entity = response.getEntity();
                EntityUtils.consume(entity);
//                System.out.println(EntityUtils.toString(response.getEntity()));
                String str = EntityUtils.toString(response.getEntity());
//                System.out.println(str);
                JSONObject obj = JSONObject.fromObject(str);
                boolean result = obj.getBoolean("result");

            } catch (Exception e) {
                viewData.error("获取验证码失败!" + e.toString());
            } finally {
                httpPost.releaseConnection();
            }
随机生成6位数验证码:

public String createRandomVcode() {
        //验证码
        String vcode = "";
        for (int i = 0; i < 6; i++) {
            vcode = vcode + (int) (Math.random() * 9);
        }
        return vcode;
    }



相关文章推荐

java发送短信验证码功能

  • 2015年04月17日 19:44
  • 283KB
  • 下载

client发送短信验证码(云之讯)

  • 2015年07月05日 21:19
  • 24KB
  • 下载

java线程池的使用-发送短信验证码

package com.wei.service.sms.impl; import java.util.Date; import java.util.HashMap; import java.util...

java向手机号发送短信验证码

需要下载这三个jar包   commons-logging-1.1.1.jar commons-httpclient-3.1.jar commons-codec-1.4.jar...

php发送短信验证码完成注册功能

1、收到到云通讯短信系统注册账号,然后下载他们的封装好的短信api接口代码,解压,然后找到CCPRestSDK.php文件和SendTemplateSMS.php文件,将其拉到根目录文件夹里。 ...

超实用的JavaScript代码段 Item4 --发送短信验证码

发送短信验证码实现点击“发送验证码”按钮后,按钮依次显示为“59秒后重试”、“58秒后重试”…直至倒计时至0秒时再恢复显示为“发送验证码”。在倒计时期间按钮为禁用状态 .第一步、获取按钮、绑定事件、设...

各大APP注册时发送短信验证码是怎么实现的?

回答这个问题可以从多个角度来回答,比如商务角度和技术角度,为了快速清晰的让广大的读者了解这个过程,本文我们从商务角度来深入分析。   实现原理     现各大APP发送短信的服务一般是由第三方短...
  • kaifaer
  • kaifaer
  • 2016年09月27日 10:52
  • 5970

云片网--发送短信验证码服务端接口

云片网发送短信验证码java服务端

spring mvc 发送短信验证码功能 阿里大于

我们自己的服务器是不具备发送短信的功能的 发送短信需要借助第三方平台 这里选择的是阿里大于 原因:免费给10块钱 测试足够了。。。。新建应用申请模板 模板要符合规范 可以带变量 比如我这个 验证...

Java使用阿里大于发送短信通知和短信验证码

说明: 1.该案例是实际开发中运用用于用户注册发送验证码和实际场景中商品价格变动,订单下发发送短信通知 2.Java项目中需要的jar 需要的jar包: fastjson-1.1.24.j...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用SendCloud发送短信验证码
举报原因:
原因补充:

(最多只允许输入30个字)