首页 > 编程知识 正文

手机号发送验证码超过次数,手机号发送验证码成功接:收不到怎么办

时间:2023-05-04 09:23:41 阅读:283845 作者:1406

在做项目的时候很多时候再进行注册的时候,我们必不可少的会用到用手机号码进行注册,但有些人不知道怎么进行发送,下面我介绍一种发送验证码的API,这种方法仅限于个人开发项目用于练手时可以使用,如果需要用到公司项目中去的话,不建议。

在这里我们用到了一个运营商--“秒滴”,我们通过注册他们的账号,可以获得他们的接口(API)使用权,然后就可以使用短信验证技术了,具体的JAVA实现代码如下:

public class SMSSafetyVerificationConfig { //以下三个值是通过注册秒滴得到的个人ID值的public static String ACCOUNT_SID = "**************";public static String AUTH_TOKEN = "**************";public static String REST_URL = "****************";}import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.net.HttpURLConnection;import java.net.URL;import java.security.MessageDigest;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Random;public class SMSSafetyVerificationUtil {private static String REST_URI = "/industrySMS/sendSMS";private static String getTimestamp(){SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");String time = sdf.format(new Date());return time;}private static String getSig(){char[] hexValue = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};String timeStamp = getTimestamp();try {String all_str = SMSSafetyVerificationConfig.ACCOUNT_SID + SMSSafetyVerificationConfig.AUTH_TOKEN + timeStamp;//String str = DigestUtils.md5Hex(all_str); //不用这种方法MessageDigest md = MessageDigest.getInstance("md5");byte[] bs = md.digest(all_str.getBytes());char[] cs = new char[bs.length*2];int k = 0;for (int i = 0; i < bs.length; i++) {cs[k++] = hexValue[bs[i] >>> 4 &0xf];cs[k++] = hexValue[bs[i] & 0xf];}return new String(cs);} catch (Exception e) {e.printStackTrace();}return null;}public static String getPostContent(){return "×tamp="+getTimestamp()+"&sig="+getSig()+"&respDataType=JSON";}public static String execute(String to,String num){String body = "accountSid="+SMSSafetyVerificationConfig.ACCOUNT_SID+"&smsContent="+"【云购】注册验证码:["+num+"],如非本人操作,请忽略此短信。"+"&to="+to;body += getPostContent(); try {URL url = new URL(SMSSafetyVerificationConfig.REST_URL+REST_URI);HttpURLConnection hConnection = (HttpURLConnection) url.openConnection();hConnection.setRequestMethod("POST");hConnection.setDoInput(true);hConnection.setDoOutput(true);hConnection.setConnectTimeout(6000);hConnection.setReadTimeout(60000);OutputStreamWriter out = new OutputStreamWriter(hConnection.getOutputStream(), "UTF-8"); out.write(body);out.flush();BufferedReader br = new BufferedReader(new InputStreamReader(hConnection.getInputStream()));char[] cs = new char[1024*1024];int len = -1;StringBuffer sb = new StringBuffer();while((len = br.read(cs)) != -1){sb.append(String.copyValueOf(cs, 0, len));}return sb.toString();} catch (Exception e) {e.printStackTrace();}return null;}public static String getRandomNum(){Random random = new Random();String i = "";while(i.length() != 6){i = random.nextInt(1000000)+"";}return i;}}public class TestApp {public static void main(String[] args) {String to = "183********"; //这是接收验证码的手机号码String num = SMSSafetyVerificationUtil.getRandomNum();String str = SMSSafetyVerificationUtil.execute(to,num);System.out.println(str);}}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。