JAVA发送手机短信,client短信发送接口示例(java)

谷梁镜
2023-12-01
代码中有注释:
 //发送短信的方法
private static ObjectMapper mapper = new ObjectMapper();
public String sendSms(){
   Long phoneNum =  getLong("phoneNum");
    Map<String,Object> map = new HashMap<String,Object>();
    HttpServletResponse response = getResponse();
    response.setContentType("text/plain;charset=UTF-8");
    try {
        ApplicationContext appContext = new ClassPathXmlApplicationContext(new String[] {});
        // *webserive 地址【已配置】
        org.springframework.core.io.Resource resource = appContext.getResource("url:http://msg.cupl.edu.cn/tp_mp/service/SmsService?wsdl");
      //第三方接口地址
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    //下面是接口中一些必填,非必填参数,第三方提供接口时,会给参数列表
        // *协议秘钥【已配置】
        map.put("secret_key", getSHA("L3t6Xjn7/kaEz7b30rYGiyxv2I4="));
        // *对应的第三方系统名称【已配置】
        map.put("tp_name", "comprehensiveSms");
        // *对应的模块名称【已配置】
        map.put("module_id", "sms");
        // *对应的平台系统名称【已配置】
        map.put("sys_id", "mp");
        // *对应的接口方法名称【已配置】
        map.put("interface_method", "sms");

        // 参数列表
        // *接收人信息,每个人员信息格式为: 名字|学工号|部门ID|部门名称|电话号码,人与人之间用“^@^”隔开(如果数据无法提供,可以写空,但是“|”不可省略),必须
        map.put("person_info", "||||"+phoneNum);
        // *短信内容,必须
        //随机产生的4位数字
        Random random = new Random();
        String code="";
        for (int i=0;i<6;i++)
        {
            code+=random.nextInt(10);
        }
        String sms_info = new String("您的验证码是:" + code + "。请不要把验证码泄露给其他人。10分钟内有效。");
        map.put("sms_info", sms_info);
        // *发送方式(3:立即发送;4:发送)
        map.put("send_priority", "3");
        // *发送时间,String型,可为空,参数不可省略
        map.put("send_time", sdf.format(date));
        // *发送人UID,可为空,参数不可省略
        map.put("operator_id", "09901");
        // *发送人ID_NUMBER,需要发送回执的时候不可为空,参数不可省略
        map.put("operator_id_number", "09901");
        // *发送人姓名,可为空,参数不可省略
        map.put("operator_name", "管理员");
        // *发送人部门ID,不可为空,参数不可省略,有关于短信的配额问题
        map.put("operator_unit_id", "1113");
        // *发送人部门名称,可为空,参数不可省略
        map.put("operator_unit_name", "中国政法大学");
        // *发送模板 ID,可在统一通讯平台中查看,不发送模板值为”0”,参数不可省略
        map.put("templet_id", "0");
        // *发送回执 ID,可在统一通讯平台中查看,不发送回执值为”0”,参数不可省略
        map.put("receipt_id", "0");
        // *发送人签名,根据模板而定,选择的模板有“发送人签名”标签的需要写值,其他为空,参数不可省略
        map.put("person_send", "");
        // *发送平台码,必须
        map.put("send_sys_id", "1");
        // *发送平台名称,必须
        map.put("send_sys_name", "第三方平台");
        // *发送使用的浏览器,可为空,参数不可省略
        map.put("user_browser", "FireFox");
        String json = mapper.writeValueAsString(map);

        System.out.println("json:"+json);
       //client 短信发送接口
        Client client = new Client(resource.getInputStream(), null);

        //输出结果 boolean型,true代表推送成功,false为失败
        Object[] result = client.invoke("saveSmsInfo", new Object[]{json});
     //这里的saveSmsInfo ,就是我们发送短信时,调用接口中的方法名
        System.out.println(result[0]);

        client.close();
        
    } catch (Exception e) {
        e.printStackTrace();


    }
    return null;
}
 类似资料: