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

 

 

  

posted @ 2017-04-19 11:39  老牛大讲堂  阅读(685)  评论(0编辑  收藏  举报