使用Java实现短信验证码

对于短信验证码的实现,作为新手肯定都觉得很难,但实际上短信验证码其实就是调用别人写好的接口,操作简单,觉得难可能是没有接触过或者逻辑上还没有理通,才会产生一种无从下手的感觉。由于阿里云和腾讯云等已经不再支持个人开发者使用短信服务,这里我使用的是互亿科技的短信服务,该平台提供一个学生套餐,10元166条短信,用于调试完全足够,模板是固定的,不允许进行任何更改,否则发送不出去。进去注册之后,会提示一个学生套餐,点击进去购买即可。
进去之后,找到图中的指示进行操作
在这里插入图片描述
找到三步和第四步的APIID和APIKEY,这是发送短信验证的核心,必须记住,找到下面的提示。
在这里插入图片描述
在这里插入图片描述
点击下载即可,将下载号的压缩包进行解压,官方支持的语言很多,找到对应的语言进行打开即可,我这里使用的是Java,下面是发送短信验证码的DOM

public class SendSmsUtf8 {

    //提交的地址
    private static String Url = "http://106.ihuyi.cn/webservice/sms.php?method=Submit";
    //短语验证地址
    public Integer send(String tel){
        HttpClient client = new HttpClient();
        PostMethod method = new PostMethod(Url);

        client.getParams().setContentCharset("UTF-8");
        method.setRequestHeader("ContentType", "application/x-www-form-urlencoded;charset=UTF-8");

        //随机验证码
        int mobile_code = (int) ((Math.random() * 9 + 1) * 100000);

        String content = "您的验证码是:" + mobile_code + "。请不要把验证码泄露给其他人。";
        NameValuePair[] data = {//提交短信
                new NameValuePair("account", "这里是AIPID"), //查看用户名是登录用户中心->验证码短信->产品总览->APIID
                new NameValuePair("password", "这里是APIKEY"),  //查看密码请登录用户中心->验证码短信->产品总览->APIKEY
                //new NameValuePair("password", util.StringUtil.MD5Encode("密码")),
                new NameValuePair("mobile", tel),//接收验证码的手机
                new NameValuePair("content", content),//官方默认模板,个人不支持更改
        };
        method.setRequestBody(data);

        try {

            client.executeMethod(method);
            String SubmitResult = method.getResponseBodyAsString();
            //System.out.println(SubmitResult);
            Document doc = DocumentHelper.parseText(SubmitResult);
            //响应码如果为2,则发送成功
            if ("2".equals(doc.getRootElement().elementText("code"))) {
                return mobile_code;
            }

        } catch (HttpException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (DocumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        //这是我自己定义的响应码,为发送失败,可能是号码有误或者短信服务欠费
        return 500;
    }

}

可以直接通过main函数进行调式,因为这个我封装到了web应用中,所有没有直接打开,官方的接口文档中,有四个重要的jar,即官方的API在这里插入图片描述
如果直接使用官方的例子,不需要导入自己的项目,否则必须复制导入自己的项目,否则不可用。
懒得写的可以直接克隆项目进行调试
gitee地址:Java实现短信验证码

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值