聚合数据传参有两种方式如下图,二选一即可
在springboot项目中的实现
示例一:GET请求+tpl_value传参
@GetMapping("/sms")
public void send() throws UnsupportedEncodingException {
String key = "xxxxxxxxxxxxxx"; // 改成自己的key
String tpl_id = "xxxxxx"; // 改成自己的模板id
String url = "http://v.juhe.cn/sms/send?mobile=%s&tpl_id=%s&tpl_value=%s&key=%s";
//假设模板里有3个参数,A,B,C
String var = "#A#=%s&#B#=%s&#C#=%s";
var = String.format(var, ”A“, ”B“, ”C“);
try {
// 传入电话等参数
url = String.format(url, ”138xxxxxxxx“, tpl_id, URLEncoder.encode(var, "utf-8"), key);
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
String res = HttpClientUtils.doGet(url); //发送GET请求
System.out.println(res);
try {
JSONObject jsonObject = JSONObject.fromObject(res);
int error_code = jsonObject.getInt("error_code");
if (error_code == 0) {
System.out.println("调用接口成功");
JSONObject result = jsonObject.getJSONObject("result");
String sid = result.getString("sid");
int fee = result.getInt("fee");
System.out.println("本次发送的唯一标示:" + sid);
System.out.println("本次发送消耗的次数:" + fee);
} else {
System.out.println("调用接口失败:" + jsonObject.getString("reason"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
示例二:POST请求+vars传参
【注意】vars需要先将json类型的字符串用URLEncoder编码,再加入post请求的参数里
@PostMapping("/sms")
public void sendPost() throws UnsupportedEncodingException {
String key = "xxxxxxxx"; //TODO 换成自己的key
String url = "http://v.juhe.cn/sms/send";
String tpl_id = "xxxxxx"; //TODO 换成自己的模板id
String param = "mobile=%s&tpl_id=%s&vars=%s&key=%s";
// 假设模板里有3个参数,A,B,C
Map<String, String> var = new HashMap<>();
var.put("A", ”A“);
var.put("B", ”B“);
var.put("C",”C“);
String json = JSONArray.toJSONString(var);
param = String.format(param, "138xxxxxxxx",tpl_id,URLEncoder.encode(json,"utf-8"),key); // var一定要编码!!
String res = HttpClientUtils.doPost(url, param); // 发送带param参数的Post请求
System.out.println(res);
try {
JSONObject jsonObject = JSONObject.fromObject(res);
int error_code = jsonObject.getInt("error_code");
if (error_code == 0) {
System.out.println("调用接口成功");
JSONObject result = jsonObject.getJSONObject("result");
String sid = result.getString("sid");
int fee = result.getInt("fee");
System.out.println("本次发送的唯一标示:" + sid);
System.out.println("本次发送消耗的次数:" + fee);
} else {
System.out.println("调用接口失败:" + jsonObject.getString("reason"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
代码里的doGet和doPost这两个方法参考了基于聚合数据的短信API接口(54)调用示例-Java版 - sdk社区 | 技术至上