学习记录372@Java 发短信

学习记录372@Java 发短信_第1张图片

买服务

网址:短信服务地址

学习记录372@Java 发短信_第2张图片

进入个人中心充值购买
学习记录372@Java 发短信_第3张图片

参考文档
学习记录372@Java 发短信_第4张图片

学习记录372@Java 发短信_第5张图片
AppId和AppSecret
学习记录372@Java 发短信_第6张图片
模板编辑
学习记录372@Java 发短信_第7张图片

写工具类,多线程使用

注意templateParams。

package com.qianfeng.utils;

import com.zhenzi.sms.ZhenziSmsClient;

import javax.xml.crypto.Data;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.Callable;

public class SmsUtil implements Callable<String> {
     
    //    发短信传递两个参数,短信内容中的数据
    private String username;
    private String password;
    //    目标号码
    private String phone;
    //   模板id
    private String currentLoginTime;
    private String currentLoginAdress;
    private String templateId;
    //模板
    private String[] templateParams;

    //    注册成功发短信
    public SmsUtil(String username, String password, String templateId, String phone) {
     
        this.username = username;
        this.password = password;
        this.templateId = templateId;
        this.phone = phone;
        templateParams = new String[2];//模板参数个数
        templateParams[0] = username;//模板的第一个参数为username
        templateParams[1] = password;//模板的第二个参数为password
    }

    //    登录地不一样发送短信,告知某个用户,什么时候,在什么地点登录了
    public SmsUtil(String username, String currentLoginTime, String currentLoginAdress, String
            templateId, String phone) {
     
        this.username = username;
        this.templateId = templateId;
        this.phone = phone;
        this.currentLoginTime = currentLoginTime;
        this.currentLoginAdress = currentLoginAdress;
        templateParams = new String[3];//模板参数个数
        templateParams[0] = username;//模板的第一个参数为username
        templateParams[1] = currentLoginTime;//模板的第二个参数为当前登录时间
        templateParams[2] = currentLoginAdress;//模板的第三个参数为当前登录地点
    }

    //    多线成任务
    @Override
    public String call() throws Exception {
     
    //第一个参数:apiUrl为请求地址,个人开发者使用https://sms_developer.zhenzikj.com,企业开发者使用https://sms.zhenzikj.com
    //另外两个参数自己查自己得
        ZhenziSmsClient client =
                new ZhenziSmsClient("https://sms_developer.zhenzikj.com",
                        AppId, "\n" +
                        AppSecret);
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("number", phone);//目标号码
        params.put("templateId", templateId);//模板id
        params.put("templateParams", templateParams);
        String result = client.send(params);
        return result;
    }
}

package com.qianfeng.utils;

import com.qianfeng.pojo.vo.UserVo;
import com.qianfeng.service.UserService;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

public class ThreadPoolUtil {
     
    //    创建一个线程池
    private static final ExecutorService executorService = Executors.newCachedThreadPool();

    //发送注册成功短信
    public static String sendRegisterSms(String username, String password, String phone) {
     
        Future<String> submit = executorService.submit(new SmsUtil(username, password, "2835", phone));
        String future = future(submit);//单独处理,主要是解决异常
        return future;
    }

    //发送登录地点异常短信
    public static String sendLoginSms(String username, Date currentLoginTime, String currentLoginAdress, String phone) {
     
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm:ss");
        String format = simpleDateFormat.format(currentLoginTime);
        Future<String> submit = executorService.submit(new SmsUtil(username, format, currentLoginAdress, "2883", phone));
        String future = future(submit);//单独处理,主要是解决异常
        return future;
    }

    //处理future,如有异常会被全局异常处理器拦截的
    public static <T> T future(Future<T> future) {
     
        T t = null;
        try {
     
            t = future.get();
            return t;
        } catch (InterruptedException e) {
     
            e.printStackTrace();
            throw new RuntimeException(e);
        } catch (ExecutionException e) {
     
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }
}

你可能感兴趣的:(学习记录372@Java 发短信)