今天就跟大家聊聊有关springboot中怎么实现一个短信服务功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
甘南网站建设公司创新互联,甘南网站设计制作,有大型网站制作公司丰富经验。已为甘南近千家提供企业网站建设服务。企业网站搭建\成都外贸网站建设要多少钱,请找那个售后服务好的甘南做网站的公司定做!
添加依赖和配置
有了上面的准备工作,我们接下来开始在我们的项目中开发吧。一样的先在pom.xml 文件中加入依赖:
这个fastjson 不是必须的,就看你项目中有没有用到啦,没有用到的话,添加第一个依赖就好了。
然后在application.properties文件中加入配置,这四个参数,就是准备工作中我们获取的四个参数。
service 层
和邮件服务一样,我们这里没有涉及到数据库,就先直接写service 层,创建SmsService 接口和 SmsServiceImpl 类。
SmsServiceImpl的代码如下:
@Service@Slf4jpublic class SmsServiceImpl implements SmsService { @Value("${sms.accessKeyId}") private String accessKeyId; @Value("${sms.accessSecret}") private String accessSecret; @Value("${sms.signName}") private String signName; @Value("${sms.templateCode}") private String templateCode; @Override public boolean sendSms(String iponeNUmber) { DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessSecret); IAcsClient client = new DefaultAcsClient(profile); CommonRequest request = new CommonRequest(); request.setMethod(MethodType.POST); request.setDomain("dysmsapi.aliyuncs.com"); request.setVersion("2017-05-25"); request.setAction("SendSms"); request.putQueryParameter("RegionId", "cn-hangzhou"); request.putQueryParameter("PhoneNumbers", iponeNUmber); request.putQueryParameter("SignName", signName); request.putQueryParameter("TemplateCode", templateCode); JSONObject object=new JSONObject(); String randCode=getRandCode(6); log.info("验证码为:{}",randCode); object.put("code",randCode); request.putQueryParameter("TemplateParam", object.toJSONString()); try { CommonResponse response = client.getCommonResponse(request); log.info(response.getData()); return true; } catch (Exception e) { log.error("{}",e); } return false; } /** * 生成随机验证码 * @param digits * @return */ public static String getRandCode(int digits) { StringBuilder sBuilder = new StringBuilder(); Random rd = new Random((new Date()).getTime()); for(int i = 0; i < digits; ++i) { sBuilder.append(String.valueOf(rd.nextInt(9))); } return sBuilder.toString(); }}
整体的代码逻辑很简单,首先是通过Value注解将配置文件中配置的那四个参数获取到。
sendSms()方法中 :
DefaultProfile 和 IAcsClient 是创建DefaultAcsClient实例并初始化。三个参数分别对应的是:地域ID,RAM账号的AccessKey ID, RAM账号AccessKey Secret。
DescribeInstancesRequest 是创建API请求并设置参数。request.putQueryParamete()我们修改主要是修改这里面的参数。PhoneNumbers 是接收信息的手机号,这里我发送的是短信验证码。所以我这里生成一个6位的短息验证码。具体需求大家可以根据需求进行调整。
controller 层
controller 层比较简单,就一个发送短信的接口,在sms包下创建SmsController类,代码如下:
@RestController@RequestMapping("/sms")public class SmsController { @Autowired private SmsService smsService; @RequestMapping(value = "/send",method = RequestMethod.GET) public String sendSms(@RequestParam(value = "userName")String userName){ smsService.sendSms(userName); return "success"; }}
看完上述内容,你们对springboot中怎么实现一个短信服务功能有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。
当前标题:springboot中怎么实现一个短信服务功能
文章起源:http://lswzjz.com/article/pdphdo.html