API发送短信验证码
程序员文章站
2022-06-04 16:17:19
...
由于 阿里大于 的短信签名一直申请不通过,没办法只好用别的短信。
这次用的是朋友推荐的 haoservice ,价格和阿里云差不多,好处是:
1、第一次买的话可以买10块钱的,300条,也就是3分钱一条,相对测试来说很便宜。
2、购买的条数,没有时间限制,不像阿里的有24个月限制。
3、没有复杂的认证,模版签名一块审核,通过的速度很快,不像阿里的还得上传营业执照,授权书等等。
言归正传:
首先登陆之后申请短信api服务,之后进入我的数据,点击短信模版,添加属于自己的模版。
提交审核,审核挺快的,我当时十分钟就审核完了。
开始整合项目:
pom.xml导包
<!-- Gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
工具类 SendSMSUtil.java 需要修改的地方,改为你自己的,注意:content里的内容除了变量#code#,其他的需要和你的模版内容一样。
import java.io.*;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import com.google.gson.Gson;
/**
*
* 类描述: 发送短信验证码 (次数 状态 时间 code 手机号)
* 项目名称:store
* 类名称:SendSMS
* 创建人:ZLY
* 创建时间:2019年4月15日 下午5:40:53
* 备注:
*/
public class SendSMSUtil {
/**
* 发送短信验证码
* @param phone 手机号码
* @param tpl_id 模板ID
* @param code 验证码
* @author ZLY
* @date 2019年4月15日 下午5:42:03
* @param
*/
public static boolean sendPaste(String phone, String tpl_id, String code) {
// if(!ContastValue.FORMALSERVER){
// return false;
// }
Gson gson = new Gson();
try {
//接口url,其他接口的话,地址不一样,方法通用
URL url = new URL("http://apis.haoservice.com/sms/sendv2");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setUseCaches(false);
connection.setRequestMethod("POST");//
connection.setInstanceFollowRedirects(true);
connection.setConnectTimeout(60000);
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
StringBuffer params = new StringBuffer();
connection.connect();
params.append("key=你自己的key").append("&").append("mobile=").append(phone)
.append("&").append("tpl_id=" + tpl_id).append("&").append("content=").append(" 【英雄联盟】欢迎您注册英雄联盟,您的验证码为"+code+",请勿泄漏于他人!");
OutputStream outputStream = connection.getOutputStream();
byte[] data = params.toString().getBytes("UTF-8");
outputStream.write(data);
outputStream.flush();
outputStream.close();
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
ResultJsonBean resultJsonBean = gson.fromJson(line, ResultJsonBean.class);
System.out.println(resultJsonBean.toString());
if (resultJsonBean != null) {
if ("0".equals(resultJsonBean.getError_code())) {
return true;
} else {
return false;
}
}
}
reader.close();
connection.disconnect();
} catch (MalformedURLException e) {
System.out.println(e.toString());
e.printStackTrace();
} catch (IOException e) {
System.out.println(e.toString());
e.printStackTrace();
} catch (Exception e) {
System.out.println(e.toString());
e.printStackTrace();
}
return false;
}
//测试
public static void main(String[] args) {
String code = (int) ((Math.random() * 9 + 1) * 100000) + "";
sendPaste("你的手机号", "你的模版id", code);
}
}
ResultJsonBean.java
/**
*
* 类描述: 发短信时候gson.fromJson的返回类
* 项目名称:store
* 类名称:ResultJsonBean
* 创建人:ZLY
* 创建时间:2019年4月15日 下午5:40:47
* 备注:
*/
public class ResultJsonBean {
private String error_code;
private String reason ;
private String result ;
public String getError_code() {
return error_code;
}
public void setError_code(String error_code) {
this.error_code = error_code;
}
public String getReason() {
return reason;
}
public void setReason(String reason) {
this.reason = reason;
}
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
@Override
public String toString() {
return "ResultJsonBean [error_code=" + error_code + ", reason="
+ reason + ", result=" + result + "]";
}
}
控制台成功,手机接到短信。
上一篇: 宝宝吐奶怎么办 新手妈妈轻松应对
下一篇: 孩子胃口不好 厌食积食怎么办