zoukankan      html  css  js  c++  java
  • Java实现 第三方的验证码发送问题--博客园老牛大讲堂

    简要:本篇文章,主要介绍怎样利用第三方平台实现短信验证码的发送问题。--博客园老牛大讲堂

    1、Java发送(验证码,短信)原理--博客园老牛大讲堂

      1、首先用户选定一个第三方平台。

      2、进行一系列操作,得到这个平台的两个固定变量

      3、之后进行请求这个平台。(这个平台就会向你指定的手机发送验证码)

    2、java发送验证码,钱谁出?--博客园老牛大讲堂

      这个问题有点弱智,但是我刚开始就是这么关心的。可以告诉初学者

      钱!是开发者出的!2017年4月份。短息验证码的价格估计是0.038元/条左右。

      下面说开发。

    3、第三方平台《秒滴科技》注册与登录。--博客园老牛大讲堂

       建立个模板,得到审核通过。

      

      得到模板的几个值--博客园老牛大讲堂

      

    4、后端代码:--博客园老牛大讲堂

      

    package Tools;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.io.UnsupportedEncodingException;
    import java.net.URL;
    import java.net.URLConnection;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    import org.apache.commons.codec.digest.DigestUtils;
    
    
    public class MessageToos {
      //博客园老牛大讲堂
        private String ACCOUNT_SID="*****************";//网页上得到的值
        private String AUTH_TOKEN="***********************";//网页上得到的值
        private String BASE_URL="https://api.miaodiyun.**********";//路径
        
        //主要完成接受一个号码,发送短信,并返回验证码信息。  ----- 博客园老牛大讲堂
        public int sentMessage(String phone) throws UnsupportedEncodingException, IOException {
            
            int a=getRandNum();//生成一个6位验证码  ----- 博客园老牛大讲堂
            String smsContent = "【老牛大讲堂科技】验证码:{"+a+"},打死都不要告诉别人哦!";//这个要与模板保持一致
            
            String url = BASE_URL + "/industrySMS/sendSMS";
            String body = "accountSid=" + ACCOUNT_SID + "&to=" + phone + "&smsContent="+ smsContent + createCommonParam();
            
            String result = post(url, body);// 提交请求
            
            return a;
    //        System.out.println("result:" + System.lineSeparator() + result);
        }
        public  String createCommonParam()  //----- 博客园老牛大讲堂
        {
            // 时间戳
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
            String timestamp = sdf.format(new Date());
            // 签名
            String sig = DigestUtils.md5Hex(ACCOUNT_SID + AUTH_TOKEN + timestamp);
            
            return "&timestamp=" + timestamp + "&sig=" + sig + "&respDataType=" + "json";
        }
        //----- 博客园老牛大讲堂
        public String post(String url, String body) throws UnsupportedEncodingException, IOException
        {
    //        System.out.println("url:" + System.lineSeparator() + url);
    //        System.out.println("body:" + System.lineSeparator() + body);
                String result = "";
            
                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;
                }
            
            return result;
        }
        
        //生成6位验证码  ----- 博客园老牛大讲堂
        public static int getRandNum() {
            return 1 + (int)(Math.random() * ((999999 - 1) + 1));
        }
        
        public static void main(String[] args) throws UnsupportedEncodingException, IOException{
            MessageToos mess=new MessageToos();
            mess.sentMessage("187********");//这是你想要向哪个手机发送手机号
        }
        
    }

      

  • 相关阅读:
    记intouch SMC local下驱动丢失问题解决
    随机变量的频数分布图
    Clonal hematopoiesis of indeterminate potential(意义不明的克隆性造血)-CHIP
    聚类热图
    linux把软件安装到指定目录
    Phred-scale quality scores的相关内容
    GATK的硬过滤
    VCF和GVCF格式说明
    非root权限 安装更新gcc
    在非小细胞肺癌中,MET基因的14号外显子突变和年龄,依赖于癌症阶段的CNV,C-MET过表达的关系
  • 原文地址:https://www.cnblogs.com/laonniudajiangtang/p/6732580.html
Copyright © 2011-2022 走看看