java-阿里云短信

推荐官方文档代码–>阿里云短信官方api.
坐标–>

		<dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-core</artifactId>
            <version>4.4.9</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
            <version>1.1.0</version>
        </dependency>

总体来讲 官方文档拿过来就能用,
但是如果对验证码有长度限制的话,
阿里云发送的验证码如果开头为0则会省略掉,对此作了以下操作

    /**
     * 为了防止短信验证码开头为0  做的处理
     * @param number 几位的验证码
     * @return
     */
 private String getSmsCode(int number) {
        String str = "0";
        while (str.startsWith("0")) {
            str = RandomStringUtils.randomNumeric(number);
        }
        return str;
    }

这样就可以保证验证码始终未6位,相对来讲改动较小

================================================

2020-07-23 17:53:51.920 ERROR 52239 --- [http-nio-8080-exec-34] c.f.c.api.service.SendSmsCodeService     : 【短信通知】短信通知失败 message=触发号码天级流控Permits:40,sendSmsResponse=com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse@72a2ff82
2020-07-23 17:57:51.628 ERROR 52239 --- [http-nio-8080-exec-54] c.f.c.api.service.SendSmsCodeService     : 【短信通知】短信通知失败 message=触发号码天级流控Permits:40,sendSmsResponse=com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse@39313210
2020-07-23 18:07:17.480 ERROR 52239 --- [http-nio-8080-exec-17] c.f.c.api.service.SendSmsCodeService     : 【短信通知】短信通知失败 message=触发号码天级流控Permits:40,sendSmsResponse=com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse@3f40f2a6
2020-07-23 18:07:22.805 ERROR 52239 --- [http-nio-8080-exec-25] c.f.c.a.e.GlobalExceptionHandler         : 认证异常信息:

原因分析:该错误码是指触发短信默认流控限制。
后来去阿里云一查 , 原来这是用户请求次数太频繁 阿里云短信防止恶意访问而做的限流
规则如下
在这里插入图片描述
接口根据规则调整相应提示即可 囧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是使用Java调用阿里云短信接口的步骤: 1. 首先,你需要在阿里云官网注册并创建一个短信服务。你可以参考阿里云官网提供的文档来了解如何创建短信服务。 2. 在你的Java项目中,你需要引入阿里云短信SDK的依赖。你可以在Maven项目中的pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>com.aliyun</groupId> <artifactId>dysmsapi20170525</artifactId> <version>2.0.6</version> </dependency> ``` 3. 在你的Java代码中,你需要导入阿里云短信SDK的相关类和方法。例如: ```java import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.exceptions.ServerException; import com.aliyuncs.profile.DefaultProfile; import com.aliyuncs.profile.IClientProfile; import com.aliyuncs.sms.model.v20170525.*; ``` 4. 创建一个DefaultAcsClient对象,并设置好AccessKey和SecretKey。例如: ```java String accessKeyId = "your_access_key_id"; String accessKeySecret = "your_access_key_secret"; IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret); DefaultAcsClient client = new DefaultAcsClient(profile); ``` 5. 构造一个SendSmsRequest对象,并设置好短信相关的参数,例如短信签名、模板ID、手机号码和模板参数。例如: ```java SendSmsRequest request = new SendSmsRequest(); request.setSignName("your_sign_name"); request.setTemplateCode("your_template_code"); request.setPhoneNumbers("your_phone_number"); request.setTemplateParam("{\"code\":\"123456\"}"); ``` 6. 调用client的sendSms方法发送短信,并处理发送结果。例如: ```java try { SendSmsResponse response = client.getAcsResponse(request); if (response.getCode() != null && response.getCode().equals("OK")) { System.out.println("短信发送成功"); } else { System.out.println("短信发送失败,错误码:" + response.getCode()); } } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); } ``` 请注意,以上代码仅为示例,你需要根据你的实际情况进行相应的修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值