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