温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

springboot中怎么实现一个短信服务功能

发布时间:2021-08-06 17:13:43 来源:亿速云 阅读:348 作者:Leah 栏目:编程语言

今天就跟大家聊聊有关springboot中怎么实现一个短信服务功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

添加依赖和配置

有了上面的准备工作,我们接下来开始在我们的项目中开发吧。一样的先在pom.xml 文件中加入依赖:

<!--阿里云短信服务--> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>4.1.0</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.61</version> </dependency>

这个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中怎么实现一个短信服务功能有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI