用官网给的示例写了个工具类SendSmsUtil,同样的util类,在JAVA运行环境下写个测试类调用可以成功运行,放在android项目里运行报错。下面附源码
SendSmsUtil.java:
public class SendMessageUtil {
//产品名称:云通信短信API产品,开发者无需替换
static final String product = "Dysmsapi";
//产品域名,开发者无需替换
static final String domain = "dysmsapi.aliyuncs.com";
//指定接收消息的终端地址 可更换
static final String endpointName = "cn-hangzhou";
//指定接收消息的终端地址机构id
static final String regionId = "cn-hangzhou";
//此处需要替换成开发者自己的AK (在阿里云访问控制台寻找)
static final String accessKeyId = "*****";
static final String accessKeySecret = "*******";
/**
* 发送验证码
* @param receivePhone 要接受短信手机号
* @param code 验证码内容
* @return
*/
public static boolean sendSms(String receivePhone, String code) {
//是否发送成功
boolean isSendSuccess= false;
try {
//初始化acsClient,暂不支持region化
IClientProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
//添加接受节点
// DefaultProfile.addEndpoint(endpointName, regionId, product, domain);
IAcsClient acsClient = new DefaultAcsClient(profile);
//组装请求对象-具体描述见控制台-文档部分内容
SingleSendSmsRequest request = new SingleSendSmsRequest();
//必填:待发送手机号
request.setRecNum(receivePhone);
//必填:短信签名-可在短信控制台中找到
request.setSignName("*******");
//必填:短信模板-可在短信控制台中找到
request.setTemplateCode("SM******");
//可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
request.setParamString("{'number':'" + code + "'}");
//得到响应消息
SingleSendSmsResponse sendSmsResponse = null;
try {
sendSmsResponse = acsClient.getAcsResponse(request);
} catch (Exception e) {
e.printStackTrace();
}
isSendSuccess = true;
} catch (Exception e) {
e.printStackTrace();
}
return isSendSuccess;
}
}
在android中调用这个sendSms方法报错:
08-15 16:53:56.540 2759-11391/cc.wolf.gamebox W/System.err: com.aliyuncs.exceptions.ClientException: SignatureDoesNotMatch : Specified signature is not matched with our calculation.
08-15 16:53:56.541 2759-11391/cc.wolf.gamebox W/System.err: RequestId : E7686154-3C84-4653-A7CA-45DAF620657B
08-15 16:53:56.542 2759-11391/cc.wolf.gamebox W/System.err: at com.aliyuncs.DefaultAcsClient.parseAcsResponse(DefaultAcsClient.java:168)
08-15 16:53:56.543 2759-11391/cc.wolf.gamebox W/System.err: at com.aliyuncs.DefaultAcsClient.getAcsResponse(DefaultAcsClient.java:105)
08-15 16:53:56.544 2759-11391/cc.wolf.gamebox W/System.err: at com.daoxian.damai.gamebox.util.SendMessageUtil.sendSms(SendMessageUtil.java:62)
08-15 16:53:56.544 2759-11391/cc.wolf.gamebox W/System.err: at com.daoxian.damai.gamebox.ui.fragment.me.FragmentPhoneRegister$MyThread.run(FragmentPhoneRegister.java:454)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。