调用阿里云短信服务平台API实现ERP系统短信发送功能
2016-12-29 19:43
1086 查看
调用阿里云短信服务平台API实现ERP系统短信发送功能
1,发送短信工具类 SendSMSUtil
2,发送短信接口 ISendSMS
3,发送短信实现类 SendSMS
4,短信签名及短信模板CODE字典类
5,项目属性文档读取工具类
6,项目属性配置文档 application.properties
7,引入阿里云依赖jar包
添加maven库
添加依赖jar包
8,接口调用中抛出异常信息: java.lang.RuntimeException: Unsupported algorithm: HmacSHA1
解决方案为:修改项目依赖 JDK 版本为 1.6或1.7,至于为什么目前不支持1.8有点迷惑
1,发送短信工具类 SendSMSUtil
package sms; import java.util.List; /** * 应用策略模式,方便以后扩展短信发送功能 * @title SendSMSUtil * @description 阿里云短信发送util * @author RenYY */ public class SendSMSUtil { /** * @description 短信发送接口 * @param sendSMS * @return * @author RenYY * @date 2016年12月29日 */ public static boolean sendSMS(ISendSMS sendSMS){ return sendSMS.sendSMS(); } }
2,发送短信接口 ISendSMS
package sms; import java.util.List; /** * @title ISendSMS * @description 阿里云短信服务平台 发送短信接口 * @author RenYY */ public interface ISendSMS { public boolean sendSMS(); }
3,发送短信实现类 SendSMS
package sms; import java.io.IOException; import java.io.InputStream; import java.util.Map; import java.util.Properties; import org.apache.log4j.Logger; import com.alibaba.fastjson.JSON; import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.profile.DefaultProfile; import com.aliyuncs.profile.IClientProfile; import com.aliyuncs.sms.model.v20160927.SingleSendSmsRequest; import com.aliyuncs.sms.model.v20160927.SingleSendSmsResponse; import com.pxjy.puxin.kernel.utils.LoadProperties; /** * @title SendSMS * @description 短信发送实现类,完成短信发送动作 * @author RenYY */ public class SendSMS implements ISendSMS { private final static Logger log = Logger.getLogger(SendSMS.class); private static String aliyun_sms_region_id = ""; //阿里云regionId private static String aliyun_sms_access_key_id = ""; //阿里云 accessKeyId private static String aliyun_sms_access_key_secret = ""; //阿里云 accessKeySecret private static String aliyun_sms_end_point_name = ""; //阿里云end_point_name private static String aliyun_sms_product = ""; //阿里云产品 private static String aliyun_sms_domain = ""; //阿里云调用短信服务平台接口域名 private String signName; //阿里云短信签名 private String templateCode; //阿里云短信模板Code private String paramString; //阿里云短信模板参数字符串 private String recNum; //发送短信手机号 static{ aliyun_sms_region_id = LoadProperties.readValue("aliyun_sms_region_id"); aliyun_sms_access_key_id = LoadProperties.readValue("aliyun_sms_access_key_id"); aliyun_sms_access_key_secret = LoadProperties.readValue("aliyun_sms_access_key_secret"); aliyun_sms_end_point_name = LoadProperties.readValue("aliyun_sms_end_point_name"); aliyun_sms_product = LoadProperties.readValue("aliyun_sms_product"); aliyun_sms_domain = LoadProperties.readValue("aliyun_sms_domain"); } /** * @description 方法描述 * @param signName 如果signName为null或者空串,则取集团短信签名; 否则取signName值 * @param templateId 1:验证短信模板, 2:通知短信模板, 3:推广短信模板 * @param paramMap 短信模板中参数名为key,参数值为value * @param phoneNum 手机号数组,例:{"18888888888","19999999999"} * @author RenYY * @date 2016年12月29日 */ public SendSMS(String signName, int templateId,Map<String, String> paramMap, String[] phoneNum) { super(); //短信签名: 如果signName为null或者空串,则取集团短信签名; 否则去signName值 this.signName = (null == signName || "".equals(signName)) ? DictSMS.SIGN_NAME_PUXIN : signName; //短信模板 switch (templateId) { case 1: this.templateCode = DictSMS.TEMPLATE_CODE_OF_VALIDATE; break;//验证短信模板 case 2: this.templateCode = DictSMS.TEMPLATE_CODE_OF_INFORM; break;//通知短信模板 case 3: this.templateCode = DictSMS.TEMPLATE_CODE_OF_PROMOTION; break;//推广短信模板 default:this.templateCode = DictSMS.TEMPLATE_CODE_OF_PROMOTION; break;//以上三种均不匹配时,默认为 推广短信模板 } //模板参数 this.paramString = JSON.toJSONString(paramMap); //构造手机号字符串,多个手机号之间逗号分隔 StringBuffer recNumSB = new StringBuffer(); for(int i = 0; i < phoneNum.length; i++){ if(i == phoneNum.length -1){ recNumSB.append(phoneNum[i]); }else{ recNumSB.append(phoneNum[i] + ","); } } this.recNum = recNumSB.toString(); } /** * @description 发送短信 * @return 发送成功返回 true,否则返回 false * @author RenYY * @date 2016年12月29日 */ @Override public boolean sendSMS() { boolean isSendSuccess = false; try { IClientProfile profile = DefaultProfile.getProfile(aliyun_sms_region_id, aliyun_sms_access_key_id, aliyun_sms_access_key_secret); DefaultProfile.addEndpoint(aliyun_sms_end_point_name, aliyun_sms_region_id, aliyun_sms_product,aliyun_sms_domain); IAcsClient client = new DefaultAcsClient(profile); SingleSendSmsRequest request = new SingleSendSmsRequest(); request.setSignName(signName); request.setTemplateCode(templateCode); request.setParamString(paramString); request.setRecNum(recNum); SingleSendSmsResponse response = client.getAcsResponse(request);//短信发送 isSendSuccess = true; } catch (Exception e) { e.printStackTrace(); log.error("*aliyun_sms_begin*"); log.error(e.getMessage()); log.error("*aliyun_sms_end*"); }finally{ return isSendSuccess; } } }
4,短信签名及短信模板CODE字典类
package com.pxjy.puxin.kernel.sms; public class DictSMS { public final static String SIGN_NAME_PUXIN = "SIGN_NAME_PUXIN"; //集团短信签名 public final static String TEMPLATE_CODE_OF_VALIDATE = "TEMPLATE_CODE_OF_VALIDATE"; //验证短信模板CODE public final static String TEMPLATE_CODE_OF_INFORM = "TEMPLATE_CODE_OF_INFORM"; //通知短信模板CODE public final static String TEMPLATE_CODE_OF_PROMOTION = "TEMPLATE_CODE_OF_PROMOTION"; //推广短信模板CODE }
5,项目属性文档读取工具类
package utils; import java.io.IOException; import java.io.InputStream; import java.util.Properties; /** * 配置文件读取类 * @title LoadProperties * @description 描述 * @author RenYY */ public class LoadProperties { /** * 通过key值获取配置文件中value值 * @description 方法描述 * @param key 配置文件中key值 * @return * @author xuzihu * @date 2015年9月9日 */ public static String readValue(String key) { String fileName = "/application.properties"; Properties props = new Properties(); InputStream in = null; String value = ""; try { in = LoadProperties.class.getResourceAsStream(fileName); props.load(in); value = props.getProperty(key); return value; } catch (Exception e) { e.printStackTrace(); } finally { try { in.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return value; } }
6,项目属性配置文档 application.properties
#### 阿里云短信服务平台 begin add by RenYY,20161227 #### aliyun_sms_region_id=cn-hangzhou aliyun_sms_access_key_id=aliyunsmsaccesskeyid aliyun_sms_access_key_secret=aliyunsmsaccesskeysecret aliyun_sms_end_point_name=cn-hangzhou aliyun_sms_product=Sms aliyun_sms_domain=sms.aliyuncs.com #### 阿里云短信服务平台 end add by RenYY,20161227 ####
7,引入阿里云依赖jar包
添加maven库
<repositories> <repository> <id>sonatype-nexus-staging</id> <name>Sonatype Nexus Staging</name> <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories>
添加依赖jar包
<dependencies> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>2.4.2</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-sms</artifactId> <version>3.0.0-rc1</version> </dependency> <dependencies>
8,接口调用中抛出异常信息: java.lang.RuntimeException: Unsupported algorithm: HmacSHA1
解决方案为:修改项目依赖 JDK 版本为 1.6或1.7,至于为什么目前不支持1.8有点迷惑
相关文章推荐
- iOS-调用系统的短信和发送邮件功能,实现短信分享邮件分享
- Python平台下调用阿里云API参数实现DDNS功能
- iOS-调用系统的短信和发送邮件功能,实现短信分享邮件分享
- iOS-调用系统的短信和发送邮件功能,实现短信分享邮件分享
- 小胖说事8------iOS 调用系统的短信和发送邮件功能,实现短信分享邮件分享
- 调用系统的短信和发送邮件功能,实现短信分享邮件分享
- Linux平台,使用JavaComm3 API及SMSLib项目实现在Web Application中发送手机短信的功能
- Springboot实现阿里云通信短信服务有关短信验证码的发送功能
- 调用webpowerAPI实现邮件发送功能(系统邮件一对一发送)
- <ios>调用系统的短信和发送邮件功能,实现短信分享邮件分享
- 调用系统的短信和邮件功能,实现发送指定内容等
- iOS-调用系统的短信和发送邮件功能,实现短信分享邮件分享
- iOS-调用系统的短信和发送邮件功能,实现短信分享邮件分享
- iOS-调用系统的短信和发送邮件功能,实现短信分享邮件分享
- iOS-调用系统的短信和发送邮件功能,实现短信分享邮件分享
- Java调用WebService接口实现发送手机短信验证码功能
- unity调用Android Api实现短信发送和震动功能
- Java调用WebService接口实现发送手机短信验证码功能
- java 调用 短信API服务 (聚合数据平台)
- Java调用WebService接口实现发送手机短信验证码功能,java 手机验证码,WebService接口调用