近一阵子,项目中的阿里云短信服务出现了问题,反复确认自己的签名、模板、密匙都是没有问题的,却还是一直返回下面这一段json,短信服务之前也是用过的,代码肯定没有问题,再将代码移植到一个新建的java项目main方法中,结果可以正常运行,手机能收到验证码,一旦部署到服务器,就是提示模板不合法。
{
"Message": "模板不合法(不存在或被拉黑)",
"RequestId": "ea17e552-43ad-4d6d-aef8-26f04ebc3b3d",
"Code": "isv.SMS_TEMPLATE_ILLEGAL"
}
最后发现是编码问题,之前项目从eclipse移到idea后,java源文件从UTF-8不知道怎么变成了GBK,最后将源文件编码改成UTF-8就没问题了。
( IDEA右下角会显示当前的编码 )
我是这样解决的,希望可以帮到你。
public class SendSms {
public static void main(String[] args) {
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "开发者密匙", "开发者密匙");
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", "手机号码");
request.putQueryParameter("SignName", "短信签名");
request.putQueryParameter("TemplateCode", "短信模板");
request.putQueryParameter("TemplateParam", "{\"code\":\"123456\"}");
try {
CommonResponse response = client.getCommonResponse(request);
System.out.println(response.getData());
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
e.printStackTrace();
}
}
}
网友评论