1、首先登陆阿里云,创建账号登陆(可以直接使用支付宝登陆),找到控制台->云通信->短信服务。点击进入。
2、进入到短信服务控制台后,首先申请自己的AccessKey.
申请到后会给你生成一个excel表格,里面存放的就是自己的AK,需要自己保存,后面在代码中测试时会用到,在沙箱环境下不用填写。
3、拿到AK后,可以到看到短信服务控制台里面有一个快速学习,进去可以使用平台提供的短信模板和签名试用(前提是账户中有余额,不购买套餐默认是0.045一条,作为个人开发者来说已经很便宜了,账上充值10元就足矣),如果需要使用自己的签名和模板,需要提交申请,一般情况下很快就会通过,通过之后就可以使用自己的签名和模板进行测试
3.当所有东西准备就绪后,就可以到调试环境中进行调试
其中,短信模板变量对应的实际值为JSON格式,即键值对的形势,你的模板中有几个就要在输入框中写几个JSON格式变量,上图中我给出了一个例子(因为我的模板中只有一个参数)。调试成功返回如下,若失败会有提示错误代码,可以在帮助文档中找到是什么原因。
当调试成功后,可以直接将代码复制下来,因为在调试时填入的信息都动态加入到代码中,接下来可以到编译器中测试。
4、下载JAR包,导入JAR包后即可在编译器中测试。由于我用的编译器是eclipse,所以我就以eclipse为例。需要使用三个JAR包(aliyun-java-sdk-core-4.1.0.jar、aliyun-java-sdk-dysmsapi-1.1.0.jar、gson-2.8.5.jar),我已经将这三个jar包上传了,点击下载
5、将jar包导入项目,然后将台式成功的代码直接复制下来放到项目中就可以测试了。
import java.util.Random;
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
public class PhoneCode {
/**
* @param phone
* 发送到的手机号
* @param code
* 验证码内容
*/
public static void sendCode(String phone, String code) {
//此处放AccessKeyID和AccessKeySecret
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "<AccessKeyID>","<AccessKeySecret>");
IAcsClient client = new DefaultAcsClient(profile);
CommonRequest request = new CommonRequest();
request.setMethod(MethodType.POST);
request.setDomain("dysmsapi.aliyuncs.com");
request.setVersion("2017-05-25");
request.setAction("SendSms");
request.putQueryParameter("RegionId", "cn-hangzhou");
//此处放接收验证码的手机号
request.putQueryParameter("PhoneNumbers", phone);
//此处放签名名称(必须审核通过)
request.putQueryParameter("SignName", "<短信签名>");
//此处放短信模板(必须审核通过)
request.putQueryParameter("TemplateCode", "<短信模板>");
//此处放验证码的内容(JSON格式\"表示转义。JSON格式:{"code":"666666"})
request.putQueryParameter("TemplateParam", "{\"code\":\"" + code + "\"}");
try {
CommonResponse response = client.getCommonResponse(request);
System.out.println(response.getData());
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
e.printStackTrace();
}
}
/**
* @return 随机生成的6位验证码
*/
public static String getCode() {
StringBuilder sb = new StringBuilder();
for (int i = 0; sb.length() < 6; i++) {
int num = new Random().nextInt(10);
sb.append(num);
}
return sb.toString();
}
}
编写Test类测试:
public class Test {
public static void main(String[] args) {
PhoneCode phoneCode = new PhoneCode();
// 获取随机验证码
String code = phoneCode.getCode();
// 接收短信的手机号
String phone = "13333333333";
// 调用发短信的方法
phoneCode.sendCode(phone, code);
}
}
如果有错误信息,可以到阿里云平台查询帮助文档。