阿里大于短信服务 Message=模板变量缺少对应参数值
作者:互联网
加一句要发送的验证码就可以了:
request.putQueryParameter("TemplateParam", "{code:188188}");
在调试页面测试可以接受到随机生成的6位数字验证码,直接复制了java代码到本地后发现报错
原因是本地的验证码需要自己随机生成,测试的话可以写一个固定的验证码测试使用
package com.xx.sms;
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 SmsTest {
public static void main(String[] args) {
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "LTAI4FzwyKPJNHq8Kegs252F", "SwcULlJaIvQvYEd1yQcwSnmeqkuhKg");
IAcsClient client = new DefaultAcsClient(profile);
CommonRequest request = new CommonRequest();
request.setSysMethod(MethodType.POST);
request.setSysDomain("dysmsapi.aliyuncs.com");
request.setSysVersion("2017-05-25");
request.setSysAction("SendSms");
request.putQueryParameter("RegionId", "cn-hangzhou");
request.putQueryParameter("PhoneNumbers", "17812316962");
request.putQueryParameter("SignName", "东易租房");
request.putQueryParameter("TemplateCode", "SMS_205409356");
/*需要发送的验证码*/
request.putQueryParameter("TemplateParam", "{code:188188}");
try {
CommonResponse response = client.getCommonResponse(request);
System.out.println(response.getData());
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
e.printStackTrace();
}
}
}
也可以随机生成6位数字验证码,将下面部分替换即可
/*需要发送的验证码*/
int code6= (int) ((Math.random() * 9 + 1) * 100000);
request.putQueryParameter("TemplateParam", "{code:"+code6+"}");
这种Math.random方式生成的随机码是计算机根据当前时间作为种子数通过固定算法计算出来的,并不是完全的自然随机数,所以这种验证码是可以人为计算出来并进行欺骗的.
标签:aliyuncs,request,验证码,putQueryParameter,import,Message,com,参数值,模板 来源: https://www.cnblogs.com/zhonggongjavastudy/p/13937519.html