700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > SpringBoot实战系列之发送短信验证码

SpringBoot实战系列之发送短信验证码

时间:2021-11-04 00:44:30

相关推荐

SpringBoot实战系列之发送短信验证码

内容速览:

1.短信验证码平台选择考虑点

2.短信平台

3.实战发送短信验证码

1.短信验证码平台选择考虑点

各个类型短信价格短信到达率、到达时间短信内容变量灵活,⽅便⽀持多场景⽀持多种推⼴内容的短信发放,例如业务推⼴、新产品宣讲、会员关怀等内容的短信多维度数据统计-查看请求量、发送成功量、失败量、等

2.短信平台

阿⾥云:/product/sms

公司使用推荐腾讯云:/product/sms

公司使用推荐第三⽅⼚商:/products/5700000

2/cmapi00046920.html

个人测试推荐

注意

由于申请接入阿里云,腾讯云需要企业认证,所以我们使用第三方厂商,复制上方链接浏览器打开即可

进入之后,点击立即购买,不用选择什么,直接支付即可,大家看自己需求选择即可,自己测试着玩,三元即可

购买好之后会有对应api文档,当然包括一些类似密钥的东西

购买之后,api文档过一会就出现

代码实战:

依赖说明,能够跑起来的Springboot项目就行

在对应application.yml中添加加如下内容:

sms:app-code: ${你自己的appcode}template-id: M72CB42894

template-id就是你短信发送的模板id,这个是官方默认的,想自己定义需要申请

使用restTemplate用于第三方接口调用

对应封装:

@Configurationpublic class RestTemplateConfig {@Beanpublic RestTemplate restTemplate(ClientHttpRequestFactory requestFactory){return new RestTemplate(requestFactory);}@Beanpublic ClientHttpRequestFactory simpleClientHttpRequestFactory(){SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();factory.setReadTimeout(10000);factory.setConnectTimeout(10000);return factory;}}

然后封装smsConfig,使用了Lombok,大家没有对应依赖的生成对应setter,getter方法即可

@ConfigurationProperties(prefix = "sms")@Configuration@Datapublic class SmsConfig {private String appCode;private String templateId;}

封装发送业务,信息打印使用了slf4j,大家没有对应依赖换成sout即可:

@Component@Slf4jpublic class SmsComponent {private static final String URL_TEMPLATE = "https://jmsms./sms/send?mobile=%s&templateId=%s&value=%s";@Autowiredprivate RestTemplate restTemplate;@Autowiredprivate SmsConfig smsConfig;public void send(String to, String templateId, String value) {String url = String.format(URL_TEMPLATE, to, templateId, value);HttpHeaders headers = new HttpHeaders();//最后在header中的格式(中间是英⽂空格)为headers.set("Authorization", "APPCODE " + smsConfig.getAppCode());HttpEntity<String> entity = new HttpEntity<>(headers);ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST, entity, String.class);log.info("url={},body={}", url, response.getBody());if (response.getStatusCode() == HttpStatus.OK) {log.info("发送短信成功,响应信息:{}", response.getBody());} else {log.error("发送短信失败,响应信息:{}", response.getBody());}}}

在对应单元测试中编写测试方法:

@RunWith(SpringRunner.class)@SpringBootTest(classes = AccountApplication.class)@Slf4jpublic class SmsTest {@Autowiredprivate SmsConfig smsConfig;@Autowiredprivate SmsComponent smsComponent;@Testpublic void testSmsSend(){smsComponent.send("110",smsConfig.getTemplateId(),"54688");}}

运行,发送成功

我的手机也收到了消息:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。