开发者社区> 问答> 正文

短信发送API接口返回问题

public static SendSmsResponse sendSms(String phone,Map<String,String> param) throws ClientException {
//初始化acsClient,暂不支持region化
IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
IAcsClient acsClient = new DefaultAcsClient(profile);

//组装请求对象-具体描述见控制台-文档部分内容
SendSmsRequest request = new SendSmsRequest();
//必填:待发送手机号
request.setPhoneNumbers(phone);
//必填:短信签名-可在短信控制台中找到
request.setSignName("鄢陵水司");
//必填:短信模板-可在短信控制台中找到
request.setTemplateCode("SMS_134313733");
//可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
request.setTemplateParam(JSON.toJSONString(param));

//选填-上行短信扩展码(无特殊需求用户请忽略此字段)
//request.setSmsUpExtendCode("90997");

//可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
request.setOutId(phone);

//hint 此处可能会抛出异常,注意catch
SendSmsResponse sendSmsResponse = null;
try {
sendSmsResponse = acsClient.getAcsResponse(request);
} catch (ClientException e) {
e.printStackTrace();
}

return sendSmsResponse;
}
Map<String,String> param = new HashMap<String, String>();
param.put("usercode","1109800,李建军");
param.put("usemonth","201804|201805|201806|201807|201808");
param.put("watermount","10");
param.put("recevamount","100.90");
param.put("account","0.00");


{"code":"isv.PARAM_LENGTH_LIMIT","message":"params over length limit is 20","requestId":"E6516D89-3A07-4BC2-B5AB-49BC84EF466D"}

如上返回,因参数超长,因我有这业务场景,有没有替代发送方案?

展开
收起
1169222310432456 2018-09-04 10:21:55 4006 0
1 条回答
写回答
取消 提交回答
  • 程序就是我的人生!
    没有办法,参数长度必须不能超出,你可以将参数中固定那部分在短信模板中申请。将很长的一个参数,分割成多个变量
    2018-09-04 20:14:23
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Boot2.0实战Redis分布式缓存 立即下载
CUDA MATH API 立即下载
API PLAYBOOK 立即下载