• 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********");//这是你想要向哪个手机发送手机号
        }
        
    }

      

  • 相关阅读:
    用java过滤器解决中文乱码_百度文库
    ASCII码表20080611 09:48美国标准信息交换标准码
    使用java得到网页编码格式
    生成用户登录页面中验证码图片的Servlet
    选择冒泡排序算法
    用*显示一个菱形
    实现分页显示
    JSP页面处理和输出
    按照分组排序结果操作数据
    建立信任关系
  • 原文地址:https://www.cnblogs.com/laonniudajiangtang/p/6732580.html
Copyright © 2020-2023  润新知