Java 发送短信功能

本文介绍了如何在Java中使用短信平台API进行短信验证,包括手机号处理、MD5加密以及调用RESTTemplate的postForObject方法发送短信请求。重点展示了如何构造MessageRequestBean对象并设置必要参数。
摘要由CSDN通过智能技术生成

短信功能要有相应的短信平台支撑,获取 短信可以,短信秘钥,模版id等

1、向方法内传参

            //替换手机号中间四位
            StringBuilder stringBuilder=new StringBuilder(account);
            stringBuilder.replace(3,7,"****");
            String acountEncrypt=stringBuilder.toString();
            //md加密
            String md5Pwd = DigestUtil.md5Hex(pwd);
            //进入到短信方法,参数为电话号,加密后手机号,密码
            b=SmsUtil.sendMessage(account,acountEncrypt,pwd);
           

2、短信方法

    private static final RestTemplate restTemplate = BeanUtil.getBean("restTemplate");

    /**
     * 请求地址
     */
    private static final String apiUrl = "http://XXXXXXXXXXXXXXXX";
/**
     * 发送短信,手机号为空则不发
     * 尊敬的用户您好!您正在操作注册账号,帐号名为:135****2596,密码是:111111
     * @param mobile 手机号
     * @return
     */
    public static Boolean sendMessage(String mobile,String account,String password){
        if(StringUtil.isEmpty(mobile)){
            return false;
        }
//mobile中存储的是电话,templateId为申请的模版号,content为发送短信的变量参数
        MessageRequestBean requestBean = new MessageRequestBuilder().mobile(mobile).templateId("275122").content(account).content(password).build();
        String s = restTemplate.postForObject(apiUrl, JSONObject.toJSON(requestBean), String.class);
        if (StringUtil.isNotEmpty(s))
        {
            JSONObject jsonObject = JSONObject.parseObject(s);
            String code = jsonObject.getString("code");
            if ("0".equals(code))
            {
                return true;
            }

        }
        return false;
    }

其中MessageRequestBean为请求短信对象

@Data
public class MessageRequestBean
{
    /**
     * 用户的accesskey
     */
    private String accesskey;

    /**
     * 用户的secret
     */
    private String secret;

    /**
     *平台上申请的接口短信签名或者签名ID(须审核通过),采用utf8编码
     */
    private String sign;

    /**
     * 平台上申请的接口短信模板Id(须审核通过)
     */
    private String templateId;

    /**
     * 接收短信的手机号码(只支持单个手机号)
     */
    private String mobile;

    /**
     * 发送的短信内容是模板变量内容,多个变量中间用##或者$$隔开,采用utf8编码
     */
    private String content;
}
public class MessageRequestBuilder
{
    private static final String CONTENT_SEPARATOR = "##";

    /**
     * 短信key
     */
    private static final String DEFAULT_ACCESSKEY = "XXXXXXx";

    /**
     * 短信密钥
     */
    private static final String DEFAULT_ACCESSSECRET = "XXXXXXXXX";

    /**
     * 签名
     */
    private static final String DEFAULT_SIGNID = "XXXXXX";

    private MessageRequestBean bean = new MessageRequestBean();

    /**
     * 模板
     */
    private static final String DEFAULT_TEMPLATEID = "XXXX";

    public MessageRequestBuilder accesskey(String accesskey)
    {
        bean.setAccesskey(accesskey);
        return this;
    }

    public MessageRequestBuilder secret(String secret)
    {
        bean.setSecret(secret);
        return this;
    }

    public MessageRequestBuilder sign(String sign)
    {
        bean.setSign(sign);
        return this;
    }

    public MessageRequestBuilder templateId(String templateId)
    {
        bean.setTemplateId(templateId);
        return this;
    }

    public MessageRequestBuilder mobile(String mobile)
    {
        bean.setMobile(mobile);
        return this;
    }

    public MessageRequestBuilder content(String content)
    {
        String c = bean.getContent();
        if (StringUtil.isEmpty(c))
            bean.setContent(content);
        else
        {
            c += (CONTENT_SEPARATOR + content);
            bean.setContent(c);
        }
        return this;
    }
    //默认值放在这个方法里
    public MessageRequestBean build()
    {
       
        return requestBean;
    }
}

关于postForObject()方法,相当于向某个地址发送信息

//        开始调用
//        参数1:目标请求地址
//        参数2:请求体
//        参数3:目标请求接口的返回值类型(execute接口的返回值类型)
        JSONObject result = restTemplate.postForObject("http://192.168.12.12:8080/test/producer/execute", request, JSONObject.class);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值