调用阿里的短信接口!总结,精辟!!!
接口的调用
总结:首先在pom文件中加入阿里公司的jar包,利用springmvc框架写一个方法,在所需要的地方调用即可。详细的步骤请看下面的说明。
1.在项目pom文件中加入阿里的jar包
2、在配置文件中加入公司开的户,和链接!短信发送一般都是需要收取费用的。注意,配置文件一定要加载到框架的容器中,方便在代码中取值。
3、控制层的代码!!!!!!
/**
* 短信的控制层
*title:
*@author taotk
*@2016年8月12日
*@company
*/
@Controller
@RequestMapping("/sms")
public class MessageController extends BaseController {
private static Logger log = LoggerFactory.getLogger(MessageController.class.getName());
@Autowired
private MessageService smsService;
@RequestMapping(value = "/code/{type}/{phone}")
public MappingJacksonJsonView register(@PathVariable String type, @PathVariable String phone,
HttpServletRequest request) throws ApiException {
log.info("======================sms.code=================");
MappingJacksonJsonView mv = new PinjiaMappingJacksonJsonView();
String sms_model = null;
switch (ESMSType.valueof(Integer.parseInt(type))) {
case Active:
sms_model = Resources.getString("appSMSActiveModelId");
break;
case Change:
sms_model = Resources.getString("appSMSChangeModelId");
break;
case Id:
sms_model = Resources.getString("appSMSIdModelId");
break;
case Register:
sms_model = Resources.getString("appSMSRegisterModelId");
break;
case Pass:
sms_model = Resources.getString("appSMSPassModelId");
default:
break;
}
String dataType = Resources.getString("appSMSDataFormat");
ESMSDataType dataFormat = ESMSDataType.Json;
if (!"json".equals(dataType))
dataFormat = ESMSDataType.Xml;
smsService.getCode(ESMSType.valueof(Integer.parseInt(type)), sms_model, phone, null, dataFormat);
return mv;
}
4、service层的代码
@Service
public class MessageService {
// 常量参数
final String appKey = Resources.getString("appSMSId");
final String secret = Resources.getString("appSMSKey");
final String url = Resources.getString("appSMSUrl");
/**
* 获得手机验证验证码
*
* @param code_type
* 获取短信验证码类别
* @param sms_model
* 短信模板
* @param sms_phone
* 需要发送验证码的手机
* @param sms_type
* 短信类型,默认为文字短信
* @param data_Type
* 返回数据类型
* @return {@link String}
* @throws ApiException
*/
public String getCode(ESMSType code_type, String sms_model, String sms_phone, String sms_type,
ESMSDataType data_Type) throws ApiException {
TaobaoClient client = new DefaultTaobaoClient(url, appKey, secret, data_Type.getTitle());
AlibabaAliqinFcSmsNumSendRequest smsRequest = new AlibabaAliqinFcSmsNumSendRequest();
smsRequest.setSmsType(StringUtils.isEmpty(sms_type) ? "normal" : sms_type);
smsRequest.setSmsFreeSignName(code_type.getTitle());
smsRequest.setRecNum(sms_phone);
String message =":-,尊敬的用户您好,拼家系统为您注册了一个账户。账户:"+sms_phone+",密码:"+sms_phone+",您可以登录拼家网,关注您的装修流程";
smsRequest.setSmsParamString("{\"code\":\"" + message + "\",\"product\":\"" + "【齐家网】"+ "\"}");
smsRequest.setSmsTemplateCode(sms_model);
AlibabaAliqinFcSmsNumSendResponse rsp = client.execute(smsRequest);
return null;
}
}
5、其他的是一些工具类,和枚举的类。
(1)
public class Resources {
private static Logger log = LoggerFactory.getLogger(Resources.class);
/** 国际化资源 */
public static ResourceBundle resourceBundle;
public static ResourceBundle wf;
public static ResourceBundle messageBundle;
static {
resourceBundle = ResourceBundle.getBundle("application");
messageBundle = ResourceBundle.getBundle("message");
}
public static void close() {
resourceBundle = null;
}
public static String myString() {
return resourceBundle.toString();
}
/**
* 从资源文件中返回字符串 我们不希望程序崩溃,所以如果没有找到Key,就直接返回Key
*/
public static String getWebMessage(String key) {
try {
if (!messageBundle.containsKey(key)) {
return "";
}
return messageBundle.getString(key);
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
return "";
}
}
public static String getWorkflow(String bizType, String key) {
wf = ResourceBundle.getBundle(bizType + "_wf");
return wf.getString(key);
}
public static String getErrorMessage(String key) {
try {
if (!messageBundle.containsKey(key)) {
return "";
}
return messageBundle.getString(key);
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
return "";
}
}
public static String getString(String key) {
try {
if (!resourceBundle.containsKey(key)) {
return "";
}
return resourceBundle.getString(key);
} catch (Exception e) {
log.error(e.getLocalizedMessage());
return "";
}
}
public static int getConfigAsInt(String key) {
return Integer.valueOf(getString(key));
}
/**
* 从资源文件中返回字符串 我们不希望程序崩溃,所以如果没有找到Key,就直接返回Key
*/
public static String getString(String key, Object[] args) {
try {
return MessageFormat.format(getString(key), args);
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
return "";
}
}
}
(2)
public class PinjiaMappingJacksonJsonView extends MappingJacksonJsonView {
protected Object filterModel(Map<String, Object> model) {
Map<?, ?> result = (Map<?, ?>) super.filterModel(model);
if (result.size() == 1) {
return result.values().iterator().next();
} else {
return result;
}
}
}
(3)
/**
* 文字短信验证码类型枚举类
*title:
*@author taotk
*@2016年8月12日
*@company www.51pinjia.com
*/
public enum ESMSType {
Register("注册验证"), Login("登录验证"), Change("变更验证"), Id("身份验证"), Active("活动验证"), Pass("变更验证");
private String title;
private ESMSType(String title) {
this.title = title;
}
public static ESMSType valueof(int index) {
return ESMSType.values()[index];
}
public String getTitle() {
return title;
}
}
(4)
/**
* 文字短信验证码数据类型类型枚举类
*title:
*@author taotk
*@2016年8月12日
*@company www.51pinjia.com
*/
public enum ESMSDataType {
Json("json"), Xml("xml");
private String title;
private ESMSDataType(String title) {
this.title = title;
}
public static ESMSDataType valueof(int index) {
return ESMSDataType.values()[index];
}
public String getTitle() {
return title;
}
}