获取手机验证码

 这里以秒嘀科技为例,可以免费测试10元,每条0.06元,

1、注册账号



2、联系客服,审核签名


package com.answer.utils;



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


import net.sf.json.JSONObject;


/**
 * 获取短信验证码类
 * 
 * @author 
 */
public class GetMessage {
	/**
	 * 用户ID
	 */
	public static final String ACCOUNT_SID = "";// 这里填写你在平台里的ACOUNT_SID
	/**
	 * 密钥
	 */
	public static final String AUTH_TOKEN = "";
	/**
	 * 请求地址前半部分  请求地址是固定的不用改
	 */
	public static final String BASE_URL = "https://api.miaodiyun.com/20150822/industrySMS/sendSMS";

	/**
	 * 
	 * 
	 * @param to
	 * @return String
	 */
	public static String getResult(String to) {
		String randNum = RandUtil.getRandNum();
		String smsContent = "【天涯旅游】您的验证码为" + randNum + ",请于" + 2 + "分钟内正确输入,如非本人操作,请忽略此短信。";
		String args = QueryUtil.queryArguments(ACCOUNT_SID, AUTH_TOKEN, smsContent, to);
		OutputStreamWriter out = 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(), "UTF-8"));
			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("手机号码");
//	 System.out.println("验证码:"+randNum+"\t"+result);
//	 }
}

工具类

package com.answer.utils;

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+"×tamp="+timestamp+"&sig="+sig+"&respDataType=JSON";
	        return str;

	    }



	    /*
	     * 获取时间戳
	     */
	    public static String getTimestamp(){
	        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
	        Date date = new Date();
	        return sdf.format(date);
	    }

	    /**
	     * 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();
	    }
}

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值