Java calls Danmi Technology SMS service to obtain verification code

package com.springmybatis.util;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;

import net.sf.json.JSONObject;

/**
 * 获取短信验证码类
 * @author LB_lfx
 *
 *
 */
public class GetMessage {
    
    


    /**
     * 用户ID
     */
    public static final String ACCOUNT_SID = "18e724b585c0b177634bf8b7ba0fe2e2";//这里填写你在平台里的ACOUNT_SID

    /**
     * 密钥
     */
    public static final String AUTH_TOKEN = "06a2a7f6f7e3af788f325f2ebc114733";

    /**
     * 请求地址前半部分
     */
    public static final String BASE_URL = "https://openapi.danmi.com/distributor/sendSMS";//请求地址是固定的不用改

    public static  String randNum = RandUtil.getRandNum();

    public  static String smsContent = "【旦米科技】您的验证码为"+randNum+",请于"+2+"分钟内正确输入,如非本人操作,请忽略此短信。";
    /**
     * (获取短信验证码)
     * @param to
     * @return String
     */
    public static String getResult(String to) {
    
    
        randNum = RandUtil.getRandNum();
        String smsContent = "【旦米科技】您的验证码为"+randNum+",请于"+2+"分钟内正确输入,如非本人操作,请忽略此短信。";            //这里的randNum 和 smsContent和上面的静态变量是一样的,可删除可保留
        String args = QueryUtil.queryArguments(ACCOUNT_SID, AUTH_TOKEN, smsContent, to);
        OutputStreamWriter out = null;
        InputStream in = null;
        BufferedReader br = null;
        StringBuffer sb = new StringBuffer();


        try {
    
    
            URL url = new URL(BASE_URL);
            URLConnection connection = url.openConnection(); //打开链接
            connection.setDoOutput(true);
            connection.setDoInput(true);
            connection.setConnectTimeout(5000);  //设置链接超时
            connection.setReadTimeout(10000);    //设置读取超时

            //提交数据
            out = new OutputStreamWriter(connection.getOutputStream(),"utf-8");
            out.write(args);
            out.flush();

            //读取返回数据
            br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            String line = "";
            while((line = br.readLine())!=null){
    
    
                sb.append(line);
            }
        } catch (Exception e) {
    
    
            e.printStackTrace();
        }finally {
    
    
            try {
    
    
                if (br!=null) {
    
    
                    br.close();
                }
                if (out!=null) {
    
    
                    out.close();
                }
            } catch (Exception e2) {
    
    
                e2.printStackTrace();
            }
        }
        JSONObject jsonObject = JSONObject.fromObject(sb.toString());
        System.out.println(jsonObject);
        Object object = jsonObject.get("respCode");
        System.out.println("状态码:"+object+"验证码:"+randNum);
        System.out.println(!object.equals("00000"));
        if (!object.equals("00000")) {
    
    
            return object.toString();
        }else{
    
    

            return randNum;
        }


    }
//	  测试功能
	  public static void main(String[] args) {
    
    
	      String result = getResult("13119408197");
	      System.out.println("验证码:"+randNum+"\t"+result);
	  }
	}
package com.springmybatis.util;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 类描述:发送验证码工具类
 */
public class QueryUtil {
    
    

    public static String queryArguments(String ACCOUNT_SID,String AUTH_TOKEN, String smsContent,String to) {
    
    

        String timestamp = getTimestamp(); //时间戳
        String sig =  MD5(ACCOUNT_SID,AUTH_TOKEN,timestamp);//签名认证

        String str = "accountSid="+ACCOUNT_SID+"&smsContent="+
                smsContent+"&to="+to+"&timestamp="+timestamp+"&sig="+sig;
        System.out.println("打印str:"+str);
        return str;
    }
    /**
     * MD5加密
     * @param args
     * @return
     */
    public static String MD5(String... args){
    
     //动态参数
        StringBuffer result = new StringBuffer();
        if (args == null || args.length == 0) {
    
    
            return "";
        } else {
    
    
            StringBuffer str = new StringBuffer();
            for (String string : args) {
    
    
                str.append(string);
            }
            System.out.println("加密前:\t"+str.toString());

            try {
    
    
                MessageDigest digest = MessageDigest.getInstance("MD5");
                byte[] bytes = digest.digest(str.toString().getBytes());
                for (byte b : bytes) {
    
    
                    String hex = Integer.toHexString(b&0xff);  //转化十六进制
                    if (hex.length() == 1) {
    
    
                        result.append("0"+hex);
                    }else{
    
    
                        result.append(hex);
                    }
                }

            } catch (NoSuchAlgorithmException e) {
    
    
                e.printStackTrace();
            }
        }
        System.out.println("加密后:\t"+result.toString());
        return result.toString();
    }
    /*
     * 获取时间戳
     */
    public static String getTimestamp(){
    
    
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
        Date date = new Date();
//        return sdf.format(date);
      return  System.currentTimeMillis()+"";
    }

}

Note: Signature management and template management are also required in Danmi Technology.

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324354287&siteId=291194637