心血来潮想写一个注册账号的接口,但是奈何之前搞过发送短信验证码的功能,于是一顿百度搜索,借助前人的经验,经过几个小时终于搞好了~
1.首先要搞腾讯云的发送短信账号
购买链接:云智信短信验证码-腾讯云市场
购买套餐类型可以根据个人财力决定,就像我就只买了11块钱的~~
2.买好了之后需要申请数字签名和短信模板
点击链接根据提示提交审核就行,一般两个小时之内就会有审核结果
登录 - 腾讯云https://console.cloud.tencent.com/smsv2
搞定这个之后就可以去写代码了,可以看下腾讯云提供的API文档。
获取appId 和 appKey发送请求时需要用到:
点击appId进入应用详情
接下来展示我的代码:
import com.github.qcloudsms.SmsSingleSender;
import com.github.qcloudsms.SmsSingleSenderResult;
import com.github.qcloudsms.httpclient.HTTPException;
import org.json.JSONException;
public class SendVrfctonCode {
public static void sendMessage(String phoneNum, String code) throws Exception {
/**
* 先准备一些基本信息,在短信控制台就可以找到。
* appId, appKey 在应用管理中就可以找到
* 签名在签名管理中可以知道 注意要写的时签名内容,而不是签名ID
* 模板Id可以在模板管理中找到
*/
String appkey = "bc18ef5ef576d7f1bfc665d5f27xxxxxx";
int appId = 1400642000;
int templateId = 1333333;
String smsSign = "腾讯云";
// 发送的手机号
String phoneNumber = phoneNum;
// 参数内容 根据你模板中有几个参数,按照对应的顺序放在数组中就行,这里只有一个参数
String[] params = { code };
try {
SmsSingleSender sender = new SmsSingleSender(appId, appkey);
SmsSingleSenderResult result = sender.sendWithParam("86", phoneNumber,
templateId, params, smsSign, "", ""); // 签名参数未提供或者为空时,会使用默认签名发送短信
} catch (HTTPException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
不过在写完之后,代码报错了:
既然报错了,就又是一顿百度,最后发现是httpclient版本的问题,原本我引入的是
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.2.4</version>
</dependency>
然后我升级到了:
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.8</version>
</dependency>
终于可以成功的发送短信验证码了~ 欧耶