
com.yunpian.sdk.api.SmsApi Maven / Gradle / Ivy
/**
*
*/
package com.yunpian.sdk.api;
import java.lang.reflect.Type;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import org.apache.http.NameValuePair;
import com.google.gson.reflect.TypeToken;
import com.yunpian.sdk.YunpianClient;
import com.yunpian.sdk.constant.Code;
import com.yunpian.sdk.model.Blackword;
import com.yunpian.sdk.model.Result;
import com.yunpian.sdk.model.SmsBatchSend;
import com.yunpian.sdk.model.SmsRecord;
import com.yunpian.sdk.model.SmsReply;
import com.yunpian.sdk.model.SmsSingleSend;
import com.yunpian.sdk.model.SmsStatus;
import com.yunpian.sdk.util.JsonUtil;
/**
* https://www.yunpian.com/api2.0/sms.html
*
* @author dzh
* @date Nov 23, 2016 1:12:05 PM
* @since 1.2.0
*/
public class SmsApi extends YunpianApi {
public static final String NAME = "sms";
@Override
public String name() {
return NAME;
}
@Override
public void init(YunpianClient clnt) {
super.init(clnt);
host(clnt.getConf().getConf(YP_SMS_HOST, "https://sms.yunpian.com"));
}
/**
* 智能匹配模板发送 only v1
*
*
* 参数名 类型 是否必须 描述 示例
*
*
* apikey String 是 用户唯一标识 9b11127a9701975c734b8aee81ee3526
*
*
* mobile String 是 接收的手机号;发送多个手机号请以逗号分隔,一次不要超过1000个
* 国际短信仅支持单号码发送,国际号码需包含国际地区前缀号码,格式必须是"+"号开头("+"号需要urlencode处理,否则会出现格式错误),国际号码不以"+"开头将被认为是中国地区的号码
* (针对国际短信,mobile参数会自动格式化到E.164格式,可能会造成传入mobile参数跟后续的状态报告中的号码不一致。E.164格式说明,参见:
* https://en.wikipedia.org/wiki/E.164) 单号码:15205201314
* 多号码:15205201314,15205201315 国际短信:+93701234567
*
*
* text String 是 短信内容 【云片网】您的验证码是1234
*
*
* extend String 否 扩展号。默认不开放,如有需要请联系客服申请 001
*
*
* uid String 否 该条短信在您业务系统内的ID,比如订单号或者短信发送记录的流水号。填写后发送状态返回值内将包含这个ID
* 默认不开放,如有需要请联系客服申请 10001
*
*
* callback_url String 否
* 本条短信状态报告推送地址。短信发送后将向这个地址推送短信发送报告。"后台-系统设置-数据推送与获取”可以做批量设置。如果后台已经设置地址的情况下,单次请求内也包含此参数,将以请求内的推送地址为准。
*
*
* @param param
* @return
*/
@Deprecated
public Result send(Map param) {
Result r = new Result<>();
List list = param2pair(param, r, APIKEY, MOBILE, TEXT);
if (r.getCode() != Code.OK)
return r;
String data = format2Form(list);
MapResultHandler h = new MapResultHandler() {
@Override
public SmsSingleSend data(Map rsp) {
switch (version()) {
case VERSION_V1:
return JsonUtil.fromJson(rsp.get(RESULT), SmsSingleSend.class);
}
return null;
}
@Override
public Integer code(Map rsp) {
return YunpianApi.code(rsp, SmsApi.this.version());
}
};
try {
return path("send.json").post(uri(), data, h, r);
} catch (Exception e) {
return h.catchExceptoin(e, r);
}
}
/**
* 单条发送
*
*
* 参数名 类型 是否必须 描述 示例
*
*
* apikey String 是 用户唯一标识 9b11127a9701975c734b8aee81ee3526
*
*
* mobile String 是
* 接收的手机号;仅支持单号码发送;国际号码需包含国际地区前缀号码,格式必须是"+"号开头("+"号需要urlencode处理,否则会出现格式错误),国际号码不以"+"开头将被认为是中国地区的号码
* (针对国际短信,mobile参数会自动格式化到E.164格式,可能会造成传入mobile参数跟后续的状态报告中的号码不一致。E.164格式说明,参见:
* https://en.wikipedia.org/wiki/E.164) 国内号码:15205201314
* 国际号码:urlencode("+93701234567");
*
*
* text String 是 短信内容 【云片网】您的验证码是1234
*
*
* extend String 否 扩展号。默认不开放,如有需要请联系客服申请 001
*
*
* uid String 否 该条短信在您业务系统内的ID,比如订单号或者短信发送记录的流水号。填写后发送状态返回值内将包含这个ID
* 默认不开放,如有需要请联系客服申请 10001
*
*
* callback_url String 否
* 本条短信状态报告推送地址。短信发送后将向这个地址推送短信发送报告。"后台-系统设置-数据推送与获取”可以做批量设置。如果后台已经设置地址的情况下,单次请求内也包含此参数,将以请求内的推送地址为准。
* http://your_receive_url_address
*
*
* @param param
* @return
*/
public Result single_send(Map param) {
Result r = new Result<>();
List list = param2pair(param, r, APIKEY, MOBILE, TEXT);
if (r.getCode() != Code.OK)
return r;
String data = format2Form(list);
MapResultHandler h = new MapResultHandler() {
@Override
public SmsSingleSend data(Map rsp) {
switch (version()) {
case VERSION_V2:
return map2SendSingleSmsInfo(rsp);
}
return null;
}
@Override
public Integer code(Map rsp) {
return YunpianApi.code(rsp, SmsApi.this.version());
}
};
try {
return path("single_send.json").post(uri(), data, h, r);
} catch (Exception e) {
return h.catchExceptoin(e, r);
}
}
/**
* 批量发送
*
*
* 参数名 类型 是否必须 描述 示例
*
*
* apikey String 是 用户唯一标识 9b11127a9701975c734b8aee81ee3526
*
*
* mobile String 是 接收的手机号;发送多个手机号请以逗号分隔,一次不要超过1000个。 单号码:15205201314
* 多号码:15205201314,15205201315
*
*
* text String 是 短信内容 【云片网】您的验证码是1234
*
*
* extend String 否 扩展号。默认不开放,如有需要请联系客服申请 001
*
*
* uid String 否 该条短信在您业务系统内的ID,比如订单号或者短信发送记录的流水号。填写后发送状态返回值内将包含这个ID
* 默认不开放,如有需要请联系客服申请 10001
*
*
* callback_url String 否
* 本条短信状态报告推送地址。短信发送后将向这个地址推送短信发送报告。"后台-系统设置-数据推送与获取”可以做批量设置。如果后台已经设置地址的情况下,单次请求内也包含此参数,将以请求内的推送地址为准。
* http://your_receive_url_address
*
*
* @param param
* @return
*/
public Result batch_send(Map param) {
Result r = new Result<>();
List list = param2pair(param, r, APIKEY, MOBILE, TEXT);
if (r.getCode() != Code.OK)
return r;
String data = format2Form(list);
MapResultHandler h = new MapResultHandler() {
@Override
public SmsBatchSend data(Map rsp) {
switch (version()) {
case VERSION_V2:
return map2SendBatchSmsInfo(rsp);
}
return null;
}
@Override
public Integer code(Map rsp) {
return YunpianApi.code(rsp, SmsApi.this.version());
}
};
try {
return path("batch_send.json").post(uri(), data, h, r);
} catch (Exception e) {
return h.catchExceptoin(e, r);
}
}
/**
* 个性化发送
*
*
* 参数名 类型 是否必须 描述 示例
*
*
* apikey String 是 用户唯一标识 9b11127a9701975c734b8aee81ee3526
*
*
* mobile String 是
* 接收的手机号;多个手机号请以逗号分隔,一次不要超过1000个且手机号个数必须与短信内容条数相等;不支持国际号码发送;
* 多号码:15205201314,15205201315
*
*
* text String 是
* 短信内容,多个短信内容请使用UTF-8做urlencode后,使用逗号分隔,一次不要超过1000条且短信内容条数必须与手机号个数相等
* 内容示意:UrlEncode("【云片网】您的验证码是1234", "UTF-8") + "," +
* UrlEncode("【云片网】您的验证码是5678", "UTF-8")
*
*
* extend String 否 扩展号。默认不开放,如有需要请联系客服申请 001
*
*
* uid String 否 该条短信在您业务系统内的ID,比如订单号或者短信发送记录的流水号。填写后发送状态返回值内将包含这个ID
* 默认不开放,如有需要请联系客服申请 10001
*
*
* callback_url String 否
* 本条短信状态报告推送地址。短信发送后将向这个地址推送短信发送报告。"后台-系统设置-数据推送与获取”可以做批量设置。如果后台已经设置地址的情况下,单次请求内也包含此参数,将以请求内的推送地址为准。
* http://your_receive_url_address
*
*
* @param param
* @return
*/
public Result multi_send(Map param) {
Result r = new Result<>();
List list = param2pair(param, r, APIKEY, MOBILE, TEXT);
if (r.getCode() != Code.OK)
return r;
String data = format2Form(list);
MapResultHandler h = new MapResultHandler() {
@Override
public SmsBatchSend data(Map rsp) {
switch (version()) {
case VERSION_V2:
return map2SendBatchSmsInfo(rsp);
}
return null;
}
@Override
public Integer code(Map rsp) {
return YunpianApi.code(rsp, SmsApi.this.version());
}
};
try {
return path("multi_send.json").post(uri(), data, h, r);
} catch (Exception e) {
return h.catchExceptoin(e, r);
}
}
/**
* /v1/sms/multi_send.json
*
* @param param
* @return
*/
public Result>> multi_send_v1(Map param) {
Result>> r = new Result<>();
List list = param2pair(param, r, APIKEY, MOBILE, TEXT);
if (r.getCode() != Code.OK)
return r;
String data = format2Form(list);
SimpleListResultHandler> h = new SimpleListResultHandler>() {
@Override
public List> data(List> rsp) {
switch (version()) {
case VERSION_V1:
return rsp;
}
return null;
}
@Override
public Integer code(List> rsp) {
if (rspMap != null) {
return YunpianApi.code(rspMap, SmsApi.this.version());
}
return Code.OK;
}
@Override
Type rspType() {
return new TypeToken>() {
}.getType();
}
};
try {
return version(VERSION_V1).path("multi_send.json").post(uri(), data, h, r);
} catch (Exception e) {
return h.catchExceptoin(e, r);
}
}
/**
* 获取状态报告
*
*
* 参数名 类型 是否必须 描述 示例
*
*
* apikey String 是 用户唯一标识 9b11127a9701975c734b8aee81ee3526
*
*
* page_size Integer 否 每页个数,最大100个,默认20个 20
*
*
* @param param
* @return
*/
public Result> pull_status(Map param) {
Result> r = new Result<>();
List list = param2pair(param, r, APIKEY);
if (r.getCode() != Code.OK)
return r;
String data = format2Form(list);
SimpleListResultHandler h = new SimpleListResultHandler() {
@Override
public List data(List rsp) {
switch (version()) {
case VERSION_V1:
if (rspMap != null) {
String flow = rspMap.get(SMS_STATUS);
return JsonUtil.>fromJson(flow, TypeListStatus);
}
case VERSION_V2:
return rsp;
}
return Collections.emptyList();
}
@Override
public Integer code(List rsp) {
if (rspMap != null) {
return YunpianApi.code(rspMap, SmsApi.this.version());
}
return Code.OK;
}
@Override
Type rspType() {
return new TypeToken>() {
}.getType();
}
};
try {
return path("pull_status.json").post(uri(), data, h, r);
} catch (Exception e) {
return h.catchExceptoin(e, r);
}
}
/**
* 获取回复短信
*
*
* 参数名 类型 是否必须 描述 示例
*
*
* apikey String 是 用户唯一标识 9b11127a9701975c734b8aee81ee3526
*
*
* page_size Integer 否 每页个数,最大100个,默认20个 20
*
*
* @param param
* @return
*/
public Result> pull_reply(Map param) {
Result> r = new Result<>();
List list = param2pair(param, r, APIKEY);
if (r.getCode() != Code.OK)
return r;
String data = format2Form(list);
SimpleListResultHandler h = new SimpleListResultHandler() {
@Override
public List data(List rsp) {
switch (version()) {
case VERSION_V1:
if (rspMap != null) {
String smsReply = rspMap.get(SMS_REPLY);
if (smsReply != null && smsReply.startsWith("[")) {
return JsonUtil.fromJson(smsReply, TypeListReply);
}
}
case VERSION_V2:
return rsp;
}
return null;
}
@Override
public Integer code(List rsp) {
if (rspMap != null) {
return YunpianApi.code(rspMap, SmsApi.this.version());
}
return Code.OK;
}
@Override
Type rspType() {
return new TypeToken>() {
}.getType();
}
};
try {
return path("pull_reply.json").post(uri(), data, h, r);
} catch (Exception e) {
return h.catchExceptoin(e, r);
}
}
/**
* 查回复的短信
*
*
* 参数名 类型 是否必须 描述 示例
*
*
* apikey String 是 用户唯一标识 9b11127a9701975c734b8aee81ee3526
*
*
* start_time String 是 短信回复开始时间 2013-08-11 00:00:00
*
*
* end_time String 是 短信回复结束时间 2013-08-12 00:00:00
*
*
* page_num Integer 是 页码,默认值为1 1
*
*
* page_size Integer 是 每页个数,最大100个 20
*
*
* mobile String 否 填写时只查该手机号的回复,不填时查所有的回复 15205201314
*
*
* return_fields 否 返回字段(暂未开放
*
*
* sort_fields 否 排序字段(暂未开放) 默认按提交时间降序
*
*
* @param param
* @return
*/
public Result> get_reply(Map param) {
Result> r = new Result<>();
List list = param2pair(param, r, APIKEY, START_TIME, END_TIME, PAGE_NUM, PAGE_SIZE);
if (r.getCode() != Code.OK)
return r;
String data = format2Form(list);
SimpleListResultHandler h = new SimpleListResultHandler() {
@Override
public List data(List rsp) {
switch (version()) {
case VERSION_V1:
if (rspMap != null) {
String smsReply = rspMap.get(SMS_REPLY);
if (smsReply != null && smsReply.startsWith("[")) {
return JsonUtil.fromJson(smsReply, TypeListReply);
}
}
case VERSION_V2:
return rsp;
}
return null;
}
@Override
public Integer code(List rsp) {
if (rspMap != null) {
return YunpianApi.code(rspMap, SmsApi.this.version());
}
return Code.OK;
}
@Override
Type rspType() {
return new TypeToken>() {
}.getType();
}
};
try {
return path("get_reply.json").post(uri(), data, h, r);
} catch (Exception e) {
return h.catchExceptoin(e, r);
}
}
/**
* 查屏蔽词
*
*
* 参数名 类型 是否必须 描述 示例
*
*
* apikey String 是 用户唯一标识 9b11127a9701975c734b8aee81ee3526
*
*
* text String 是 要检查的短信模板或者内容 这是一条测试短信
*
*
* @param param
* @return
*/
public Result> get_black_word(Map param) {
Result> r = new Result<>();
List list = param2pair(param, r, APIKEY, TEXT);
if (r.getCode() != Code.OK)
return r;
String data = format2Form(list);
SimpleListResultHandler h = new SimpleListResultHandler() {
@Override
public List data(List rsp) {
switch (version()) {
case VERSION_V1:
if (rspMap != null) {
String result = rspMap.get(RESULT);
if (result != null)
return JsonUtil.fromJson(result, Blackword.class).toList();
}
case VERSION_V2:
return rsp;
}
return null;
}
@Override
public Integer code(List rsp) {
if (rspMap != null) {
return YunpianApi.code(rspMap, SmsApi.this.version());
}
return Code.OK;
}
@Override
Type rspType() {
return new TypeToken>() {
}.getType();
}
};
try {
return path("get_black_word.json").post(uri(), data, h, r);
} catch (Exception e) {
return h.catchExceptoin(e, r);
}
}
/**
* 查短信发送记录
*
*
* 参数名 类型 是否必须 描述 示例
*
*
* apikey String 是 用户唯一标识 9b11127a9701975c734b8aee81ee3526
*
*
* mobile String 否 需要查询的手机号 15205201314
*
*
* start_time String 是 短信发送开始时间 2013-08-11 00:00:00
*
*
* end_time String 是 短信发送结束时间 2013-08-12 00:00:00
*
*
* page_num Integer 否 页码,默认值为1 1
*
*
* page_size Integer 否 每页个数,最大100个 20
*
*
* @param param
* @return
*/
public Result> get_record(Map param) {
Result> r = new Result<>();
List list = param2pair(param, r, APIKEY, START_TIME, END_TIME);
if (r.getCode() != Code.OK)
return r;
String data = format2Form(list);
SimpleListResultHandler h = new SimpleListResultHandler() {
@Override
public List data(List rsp) {
switch (version()) {
case VERSION_V1:
if (rspMap != null) {
String sms = rspMap.get(SMS);
if (sms != null) {
if (sms.startsWith("["))
return JsonUtil.fromJson(sms, TypeListReply);
}
}
case VERSION_V2:
return rsp;
}
return null;
}
@Override
public Integer code(List rsp) {
if (rspMap != null) {
return YunpianApi.code(rspMap, SmsApi.this.version());
}
return Code.OK;
}
@Override
Type rspType() {
return new TypeToken>() {
}.getType();
}
};
try {
return path("get_record.json").post(uri(), data, h, r);
} catch (Exception e) {
return h.catchExceptoin(e, r);
}
}
/**
* 统计短信条数
*
*
* 参数名 类型 是否必须 描述 示例
*
*
* apikey String 是 用户唯一标识 9b11127a9701975c734b8aee81ee3526
*
*
* start_time String 是 短信发送开始时间 2013-08-11 00:00:00
*
*
* end_time String 是 短信发送结束时间 2013-08-12 00:00:00
*
*
* mobile String 否 需要查询的手机号 15205201314
*
*
* page_num Integer 否 页码,默认值为1 1
*
*
* page_size Integer 否 每页个数,最大100个 20
*
*
* @param param
* @return
*/
public Result count(Map param) {
Result r = new Result<>();
List list = param2pair(param, r, APIKEY, START_TIME, END_TIME);
if (r.getCode() != Code.OK)
return r;
String data = format2Form(list);
MapResultHandler h = new MapResultHandler() {
@Override
public Integer data(Map rsp) {
try {
return Integer.parseInt(rsp.get(TOTAL));
} catch (Exception e) {
}
return 0;
}
@Override
public Integer code(Map rsp) {
return YunpianApi.code(rsp, SmsApi.this.version());
}
};
try {
return path("count.json").post(uri(), data, h, r);
} catch (Exception e) {
return h.catchExceptoin(e, r);
}
}
/**
* 指定模板发送 only v1
*
*
* 参数名 类型 是否必须 描述 示例
*
*
* apikey String 是 用户唯一标识 9b11127a9701975c734b8aee81ee3526
*
*
* mobile String 是 接收的手机号 15205201314
*
*
* tpl_id Long 是 模板id 1
*
*
* tpl_value String 是 变量名和变量值对。请先对您的变量名和变量值分别进行urlencode再传递。使用参考:代码示例。
* 注:变量名和变量值都不能为空 模板: 【#company#】您的验证码是#code#。 最终发送结果: 【云片网】您的验证码是1234。
* tplvalue=urlencode("#code#") + "=" + urlencode("1234") + "&" +
* urlencode("#company#") + "=" + urlencode("云片网"); 若您直接发送报文请求则使用下面这种形式
* tplvalue=urlencode(urlencode("#code#") + "=" + urlencode("1234") + "&" +
* urlencode("#company#") + "=" + urlencode("云片网"));
*
*
* extend String 否 扩展号。默认不开放,如有需要请联系客服申请 001
*
*
* uid String 否 用户自定义唯一id。最大长度不超过256的字符串。 默认不开放,如有需要请联系客服申请 10001
*
*
* @param param
* @return
*/
@Deprecated
public Result tpl_send(Map param) {
Result r = new Result<>();
List list = param2pair(param, r, APIKEY, MOBILE, TPL_ID, TPL_VALUE);
if (r.getCode() != Code.OK)
return r;
String data = format2Form(list);
MapResultHandler h = new MapResultHandler() {
@Override
public SmsSingleSend data(Map rsp) {
switch (version()) {
case VERSION_V1:
String result = rsp.get(RESULT);
if (result != null && result.startsWith("{")) {
return JsonUtil.fromJson(result, SmsSingleSend.class);
}
}
return null;
}
@Override
public Integer code(Map rsp) {
return YunpianApi.code(rsp, SmsApi.this.version());
}
};
try {
return path("tpl_single_send.json").post(uri(), data, h, r);
} catch (Exception e) {
return h.catchExceptoin(e, r);
}
}
/**
* 指定模板单发 only v2
*
*
* 参数名 类型 是否必须 描述 示例
*
*
* apikey String 是 用户唯一标识 9b11127a9701975c734b8aee81ee3526
*
*
* mobile String 是
* 接收的手机号(针对国际短信,mobile参数会自动格式化到E.164格式,可能会造成传入mobile参数跟后续的状态报告中的号码不一致。E.164格式说明,参见:
* https://en.wikipedia.org/wiki/E.164) 15205201314
*
*
* tpl_id Long 是 模板id 1
*
*
* tpl_value String 是 变量名和变量值对。请先对您的变量名和变量值分别进行urlencode再传递。使用参考:代码示例。
* 注:变量名和变量值都不能为空 模板: 【#company#】您的验证码是#code#。 最终发送结果: 【云片网】您的验证码是1234。
* tplvalue=urlencode("#code#") + "=" + urlencode("1234") + "&" +
* urlencode("#company#") + "=" + urlencode("云片网"); 若您直接发送报文请求则使用下面这种形式
* tplvalue=urlencode(urlencode("#code#") + "=" + urlencode("1234") + "&" +
* urlencode("#company#") + "=" + urlencode("云片网"));
*
*
* extend String 否 扩展号。默认不开放,如有需要请联系客服申请 001
*
*
* uid String 否 用户自定义唯一id。最大长度不超过256的字符串。 默认不开放,如有需要请联系客服申请 10001
*
*
* @param param
* @return
*/
@Deprecated
public Result tpl_single_send(Map param) {
Result r = new Result<>();
List list = param2pair(param, r, APIKEY, MOBILE, TPL_ID, TPL_VALUE);
if (r.getCode() != Code.OK)
return r;
String data = format2Form(list);
MapResultHandler h = new MapResultHandler() {
@Override
public SmsSingleSend data(Map rsp) {
switch (version()) {
case VERSION_V2:
return map2SendSingleSmsInfo(rsp);
}
return null;
}
@Override
public Integer code(Map rsp) {
return YunpianApi.code(rsp, SmsApi.this.version());
}
};
try {
return path("tpl_single_send.json").post(uri(), data, h, r);
} catch (Exception e) {
return h.catchExceptoin(e, r);
}
}
/**
* 指定模板群发 only v2
*
*
* 参数名 类型 是否必须 描述 示例
*
*
* apikey String 是 用户唯一标识 9b11127a9701975c734b8aee81ee3526
*
*
* mobile String 是
* 接收的手机号(针对国际短信,mobile参数会自动格式化到E.164格式,可能会造成传入mobile参数跟后续的状态报告中的号码不一致。E.164格式说明,参见:
* https://en.wikipedia.org/wiki/E.164) 15205201314
*
*
* tpl_id Long 是 模板id 1
*
*
* tpl_value String 是 变量名和变量值对。请先对您的变量名和变量值分别进行urlencode再传递。使用参考:代码示例。
* 注:变量名和变量值都不能为空 模板: 【#company#】您的验证码是#code#。 最终发送结果: 【云片网】您的验证码是1234。
* tplvalue=urlencode("#code#") + "=" + urlencode("1234") + "&" +
* urlencode("#company#") + "=" + urlencode("云片网"); 若您直接发送报文请求则使用下面这种形式
* tplvalue=urlencode(urlencode("#code#") + "=" + urlencode("1234") + "&" +
* urlencode("#company#") + "=" + urlencode("云片网"));
*
*
* extend String 否 扩展号。默认不开放,如有需要请联系客服申请 001
*
*
* uid String 否 用户自定义唯一id。最大长度不超过256的字符串。 默认不开放,如有需要请联系客服申请 10001
*
*
* @param param
* @return
*/
@Deprecated
public Result tpl_batch_send(Map param) {
Result r = new Result<>();
List list = param2pair(param, r, APIKEY, MOBILE, TPL_ID, TPL_VALUE);
if (r.getCode() != Code.OK)
return r;
String data = format2Form(list);
MapResultHandler h = new MapResultHandler() {
@Override
public SmsBatchSend data(Map rsp) {
switch (version()) {
case VERSION_V2:
return map2SendBatchSmsInfo(rsp);
}
return null;
}
@Override
public Integer code(Map rsp) {
return YunpianApi.code(rsp, SmsApi.this.version());
}
};
try {
return path("tpl_batch_send.json").post(uri(), data, h, r);
} catch (Exception e) {
return h.catchExceptoin(e, r);
}
}
private static final Type TypeListReply = new TypeToken>() {
}.getType();
private static final Type TypeListStatus = new TypeToken>() {
}.getType();
private static final Type TypeListBatch = new TypeToken>() {
}.getType();
protected SmsBatchSend map2SendBatchSmsInfo(Map rsp) {
if (rsp != null) {
try {
SmsBatchSend info = new SmsBatchSend();
info.setTotal_count(Integer.parseInt(rsp.get(TOTAL_COUNT)));
info.setTotal_fee(Double.parseDouble(rsp.get(TOTAL_FEE)));
info.setUnit(rsp.get(UNIT));
String data = rsp.get(DATA);
if (data != null && data.startsWith("["))
info.setData(JsonUtil.>fromJson(data, TypeListBatch));
return info;
} catch (Exception e) {
LOG.error(e.getMessage(), e.fillInStackTrace());
}
}
return null;
}
protected SmsSingleSend map2SendSingleSmsInfo(Map rsp) {
if (rsp != null) {
try {
SmsSingleSend info = new SmsSingleSend();
if (rsp.containsKey(CODE))
info.setCode(Integer.parseInt(rsp.get(CODE)));
if (rsp.containsKey(MSG))
info.setMsg(rsp.get(MSG));
if (rsp.containsKey(MOBILE))
info.setMobile(rsp.get(MOBILE));
if (rsp.containsKey(UNIT))
info.setUnit(rsp.get(UNIT));
info.setCount(Integer.parseInt(rsp.get(COUNT)));
info.setFee(Double.parseDouble(rsp.get(FEE)));
info.setSid(Long.parseLong(rsp.get(SID)));
return info;
} catch (Exception e) {
LOG.error(e.getMessage(), e.fillInStackTrace());
}
}
return null;
}
}