短信验证码
在写仿天猫项目需要使用电话号码进行注册,然后填写短信验证码进行验证。使用的是秒滴验证码公司中的验证第三方平台,代码如下:
package message; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Random; import javax.jms.Message; import org.json.JSONObject; /** * 发送验证码 * @author Administrator * */ public class GetMessageCode { private static final String QUERY_PATH = "https://api.miaodiyun.com/20150822/industrySMS/sendSMS"; private static final String ACCOUNT_SID = "aec4e6dc80ac42d18c66431055a219c0"; private static final String AUTH_TOKEN = "573c78f24694442c9b70dc4d1609d3e5"; /** * 根据相应的手机号码,发送验证码 * @param phone * @return */ public static String getCode(String phone){ String random = smsCode(); String timestamp = getTimestamp(); String sig = getMD5(ACCOUNT_SID, AUTH_TOKEN, timestamp); String tamp ="【XXXXXXX】登录验证码:"+random+",如非本人操作,请忽略此短信。"; OutputStreamWriter out = null; BufferedReader br = null; StringBuilder result = new StringBuilder(); try { URL url = new URL(QUERY_PATH); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); connection.setDoInput(true);//设置是否允许数据写入 connection.setDoOutput(true);//设置是否允许参数输出 connection.setConnectTimeout(5000);//设置连接响应时间 connection.setReadTimeout(10000);//设置参数读取时间 //Content-type:application/x-www-form-urlencoded connection.setRequestProperty("Content-type", "application/x-www-form-urlencoded"); //提交数据 out = new OutputStreamWriter(connection.getOutputStream(),"UTF-8"); String args = getQueryArgs(ACCOUNT_SID, tamp, phone, timestamp, sig,"JSON"); out.write(args); out.flush(); //读取返回结果 br = new BufferedReader(new InputStreamReader(connection.getInputStream())); String temp=""; while ((temp=br.readLine())!=null) { result.append(temp); } } catch (Exception e) { e.printStackTrace(); } //JSONObject json = new JSONObject(result.toString()); //String respCode = json.getString("respCode"); //String defuatRespCode = "00000"; //if(defuatRespCode.equals(respCode)){ return random; //} //else { //return result.toString(); //return defuatRespCode; //} } /** * 获取当前时间 * @return */ public static String getTimestamp(){ return new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); } /** * 参数拼接 * @param accountSid * @param smsContent * @param to * @param timestamp * @param sig * @param respDataType * @return */ public static String getQueryArgs(String accountSid,String smsContent,String to,String timestamp,String sig,String respDataType){ String bb ="accountSid="+accountSid+"&smsContent="+smsContent+"&to="+to+"×tamp="+timestamp+"&sig="+sig+"&respDataType="+respDataType; return bb; //02:08:33 } /** * sig签名 * @param sid * @param token * @param timestamp * @return */ public static String getMD5(String sid,String token,String timestamp){ StringBuilder result = new StringBuilder(); String source = sid+token+timestamp; try { MessageDigest digest = MessageDigest.getInstance("MD5"); byte[] bytes = digest.digest(source.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) { // TODO Auto-generated catch block e.printStackTrace(); } return result.toString(); } /** * 获取验证码 * @return */ public static String smsCode(){ String ran = new Random().nextInt(1000000)+""; if(ran.length()!=6){ return smsCode(); }else { return ran; } } // public static void main(String[] args) { // //String time = getTimestamp(); // //System.out.println(time); // // //String md5 = getMD5("1", "2", "3"); // //System.out.println(md5.length()); // // //for (int i = 0; i < 50; i++) { // // System.out.println(smsCode()); // //} // // String code = getCode("17670651884"); // System.out.println(code); // } }
1、先在秒滴平台官网注册--》登录,然后如下图操作

创建模板,然后按照下图进行模板填写,通过审核便可以使用了

然后再项目中创建上一个类,将上面的代码复制到类中,然后修改三处地方(黄色字体,红色背景的代码),便可使用。
private static final String ACCOUNT_SID = "aec4e6dc80ac42d18c66431055a219c0";
private static final String AUTH_TOKEN = "573c78f24694442c9b70dc4d1609d3e5";
String tamp ="【XXXXXX】登录验证码:"+random+",如非本人操作,请忽略此短信。";

如图,将上面的信息复制修改到自己需要的代码中,第三个参数:‘【】’中的信息就是前面模板中的短信签名,复制到里面就可以了,然后{1}要修改为random变量。所有需要进行修改的信息不能复制错了,多一个空格也会让代码的功能失效

浙公网安备 33010602011771号