阿里云短信服务提示JSON参数不合法解决方法

解决阿里云短信服务json格式错误问题

当时使用模板如下

在这里插入图片描述

问题描述:

后经测试报JSON参数不合法:
{“Message”:“JSON参数不合法”,“RequestId”:“214367F1-5A92-4B20-8F3D-3009E733FE86”,“Code”:“isv.INVALID_JSON_PARAM”}

{
	"Message": "JSON参数不合法",
	"RequestId": "D16E26A2-0FE3-4FF6-8655-BD1756A75210",
	"Code": "isv.INVALID_JSON_PARAM"
}

原因分析:

问题的分析:
后来发现代码json格式转换出错了,在json对象中, 要以其键名为模板中的变量名,对象的值为模板中的值.所以这里需要提供的参数要与阿里云短信服务中的模板变量名的参数名一致且是String类型的;
request.putQueryParameter("TemplateParam","{"code":""+param+""}");

具体代码如下


解决方案:

public static void sendMessage(String phoneNumbers, String param) throws ClientException {
		//填写自己的AccessKey ID 和 AccessKey Secret
		DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "<accessKeyId>",
				"<accessSecret>");
		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", phoneNumbers);
		request.putQueryParameter("SignName", "云服务");
		//填写自己的模版CODE,我这里是"SMS_205463975"
		request.putQueryParameter("TemplateCode", "SMS_205463975");
		//这里需要将模板变量名参数和传入的参数以json格式填写即可
		request.putQueryParameter("TemplateParam","{\"code\":\""+param+"\"}");
		try {
			CommonResponse response = client.getCommonResponse(request);
			System.out.println(response.getData());
		} catch (ServerException e) {
			e.printStackTrace();
		} catch (ClientException e) {
			e.printStackTrace();
		}
	}
}

//具体测试代码
public class TestSms {
    public static void main(String[] args) throws ClientException {
        SMSUtils.sendMessage("138xxxxxxxx","
        7832");
    }
}
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值