java调用阿里云短信API 实现短信验证码

这里我们选用阿里云的短信接口,毕竟BAT实力可见,现在阿里云的话有活动开通短信服务,免费送100条短息,你可以进行测试。话不多说,奉上传送门:

----------------------活动地址------------------------------

活动地址java调用阿里云短信API 实现短信验证码_第1张图片

领取成功后进入控制台,找到短信服务

java调用阿里云短信API 实现短信验证码_第2张图片

 

进入短信服务之后可以看到你的一个大概信息

然后我们需要申请一个签名模板

签名:就是你收到短信后一般不就是有个公司抬头或者组织的名称在短信的最前面

模板:就是具体短信内容,然后要替换的东西就用json来代替

java调用阿里云短信API 实现短信验证码_第3张图片

 

最后你需要配置一下你的AccessKey

访问密钥AccessKey(AK)相当于登录密码,只是使用场景不同。AccessKey用于程序方式调用短信服务API,而登录密码用于登录控制台。

您可以使用AccessKey构造一个API请求(或者使用短信服务SDK)来操作资源。

AccessKey包括AccessKeyId和AccessKeySecret。

  • AccessKeyId用于标识用户。
  • AccessKeySecret是用来验证用户的密钥。AccessKeySecret必须保密。

java调用阿里云短信API 实现短信验证码_第4张图片

java调用阿里云短信API 实现短信验证码_第5张图片

直接创建就ok了

然后下载对应语言的SDK

这里讲的是java版本的

前提条件

在安装和使用阿里云Java SDK前,确保您已经:

  • 安装Java环境。阿里云Java SDK要求使用JDK1.6或更高版本。
  • 已经注册阿里云账号并生成访问访问密钥(AccessKey)。详细步骤请参考创建AccessKey。

Java SDK安装方式

您可以通过以下两种方式安装Java SDK。

  • 添加Maven依赖 (推荐)
  • 在集成开发环境中导入JAR文件

添加Maven依赖 (推荐)

如果您使用Maven管理Java项目,可以通过在pom.xml文件中添加Maven依赖安装Java 阿里云SDK。您可以在Maven库中查看各云产品的Maven依赖信息。

添加以下依赖安装阿里云Java SDK核心库

dependency>
    com.aliyun
    aliyun-java-sdk-core
    4.1.0

。然后直接上java代码

package util;

import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;

public class SMSUtil {
    //对应你阿里云账户的 accessKeyId
    private static final String accessKeyId = "";
    //对应你阿里云账户的 accessKeySecret
    private static final String accessKeySecret = "";
    //对应签名名称
    private static final String signName="";
    //对应模板代码
    private static final String templateCode="";

    private static int mobile_code = (int)((Math.random()*9+1)*100000);
    /**
     * 短信发送
     * @param telphone 发送的手机号
     */
    public static void SendCode(String telphone) {

        DefaultProfile profile = DefaultProfile.getProfile("default",
                accessKeyId, accessKeySecret);
        IAcsClient client = new DefaultAcsClient(profile);

        CommonRequest request = new CommonRequest();
        //request.setProtocol(ProtocolType.HTTPS);
        request.setMethod(MethodType.POST);
        //阿里云对应发送短信的服务器地址
        request.setDomain("dysmsapi.aliyuncs.com");
        //对应的版本号
        request.setVersion("2017-05-25");

        request.setAction("SendSms");
        request.putQueryParameter("PhoneNumbers", telphone);
        request.putQueryParameter("SignName", signName);
        request.putQueryParameter("TemplateCode", templateCode);
        request.putQueryParameter("TemplateParam", "{\"code\":"+mobile_code+"}");
        try {
            CommonResponse response = client.getCommonResponse(request);
            System.out.println(response.getData());
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            e.printStackTrace();
        }
    }


}

这样短信的发送就完成了,但是怎么验证呢,显然验证码的验证写在这个工具内里是不行的,

建议发送验证码的时候将验证码写入Redis或者数据库

如果你写入redis的话,设置一个过期时间比如5分钟,比如set的时候

set("code"+手机号,验证码)

你在5分钟之内读取的时候就默认用code+手机号,过期自然就取不到值

 

如果你写入其他数据库的话,建议存入的key为code+手机号+验证码发送的时间

读取验证码的时候在判断验证码是否过期。

等段时间有时间了在把具体代码写写,

 

你可能感兴趣的:(other)