zoukankan      html  css  js  c++  java
  • 调用阿里的短信接口!总结,精辟!!!

    接口的调用

    总结:首先在pom文件中加入阿里公司的jar包,利用springmvc框架写一个方法,在所需要的地方调用即可。详细的步骤请看下面的说明。

    1.在项目pom文件中加入阿里的jar包

    2、在配置文件中加入公司开的户,和链接!短信发送一般都是需要收取费用的。注意,配置文件一定要加载到框架的容器中,方便在代码中取值。

    3、控制层的代码!!!!!!

    /**
     * 短信的控制层
     *title:
     *@author taotk
     *@2016年8月12日
     *@company
     */
    @Controller
    @RequestMapping("/sms")
    public class MessageController extends BaseController {

        private static Logger log = LoggerFactory.getLogger(MessageController.class.getName());
        @Autowired
        private MessageService smsService;

        @RequestMapping(value = "/code/{type}/{phone}")
        public MappingJacksonJsonView register(@PathVariable String type, @PathVariable String phone,
                HttpServletRequest request) throws ApiException {
            log.info("======================sms.code=================");
            MappingJacksonJsonView mv = new PinjiaMappingJacksonJsonView();
            String sms_model = null;
            switch (ESMSType.valueof(Integer.parseInt(type))) {
            case Active:
                sms_model = Resources.getString("appSMSActiveModelId");
                break;
            case Change:
                sms_model = Resources.getString("appSMSChangeModelId");
                break;
            case Id:
                sms_model = Resources.getString("appSMSIdModelId");
                break;
            case Register:
                sms_model = Resources.getString("appSMSRegisterModelId");
                break;
            case Pass:
                sms_model = Resources.getString("appSMSPassModelId");
            default:
                break;
            }
            String dataType = Resources.getString("appSMSDataFormat");
            ESMSDataType dataFormat = ESMSDataType.Json;
            if (!"json".equals(dataType))
                dataFormat = ESMSDataType.Xml;
            smsService.getCode(ESMSType.valueof(Integer.parseInt(type)), sms_model, phone, null, dataFormat);
            return mv;
        }

    4、service层的代码

    @Service
    public class MessageService {

        
        // 常量参数
            final String appKey = Resources.getString("appSMSId");
            final String secret = Resources.getString("appSMSKey");
            final String url = Resources.getString("appSMSUrl");

            /**
             * 获得手机验证验证码
             *
             * @param code_type
             *            获取短信验证码类别
             * @param sms_model
             *            短信模板
             * @param sms_phone
             *            需要发送验证码的手机
             * @param sms_type
             *            短信类型,默认为文字短信
             * @param data_Type
             *            返回数据类型
             * @return {@link String}
             * @throws ApiException
             */
            public String getCode(ESMSType code_type, String sms_model, String sms_phone, String sms_type,
                    ESMSDataType data_Type) throws ApiException {
                TaobaoClient client = new DefaultTaobaoClient(url, appKey, secret, data_Type.getTitle());
                AlibabaAliqinFcSmsNumSendRequest smsRequest = new AlibabaAliqinFcSmsNumSendRequest();
                smsRequest.setSmsType(StringUtils.isEmpty(sms_type) ? "normal" : sms_type);
                smsRequest.setSmsFreeSignName(code_type.getTitle());
                smsRequest.setRecNum(sms_phone);
                String message =":-,尊敬的用户您好,拼家系统为您注册了一个账户。账户:"+sms_phone+",密码:"+sms_phone+",您可以登录拼家网,关注您的装修流程";
                smsRequest.setSmsParamString("{"code":"" + message + "","product":"" + "【齐家网】"+ ""}");
                smsRequest.setSmsTemplateCode(sms_model);
                AlibabaAliqinFcSmsNumSendResponse rsp = client.execute(smsRequest);
                return null;
            }
    }
    5、其他的是一些工具类,和枚举的类。

    (1)

    public class Resources {
        private static Logger log = LoggerFactory.getLogger(Resources.class);
        /** 国际化资源 */
        public static ResourceBundle resourceBundle;
        public static ResourceBundle wf;
        public static ResourceBundle messageBundle;

        static {
            resourceBundle = ResourceBundle.getBundle("application");
            messageBundle = ResourceBundle.getBundle("message");
        }

        public static void close() {
            resourceBundle = null;
        }

        public static String myString() {
            return resourceBundle.toString();
        }

        /**
         * 从资源文件中返回字符串 我们不希望程序崩溃,所以如果没有找到Key,就直接返回Key
         */
        public static String getWebMessage(String key) {
            try {
                if (!messageBundle.containsKey(key)) {
                    return "";
                }
                return messageBundle.getString(key);
            } catch (Exception e) {
                log.error(e.toString());
                e.printStackTrace();
                return "";
            }
        }

        public static String getWorkflow(String bizType, String key) {
            wf = ResourceBundle.getBundle(bizType + "_wf");
            return wf.getString(key);
        }

        public static String getErrorMessage(String key) {
            try {
                if (!messageBundle.containsKey(key)) {
                    return "";
                }
                return  messageBundle.getString(key);
            } catch (Exception e) {
                log.error(e.toString());
                e.printStackTrace();
                return "";
            }
        }

        public static String getString(String key) {
            try {
                if (!resourceBundle.containsKey(key)) {
                    return "";
                }
                return resourceBundle.getString(key);
            } catch (Exception e) {
                log.error(e.getLocalizedMessage());
                return "";
            }
        }

        public static int getConfigAsInt(String key) {
            return Integer.valueOf(getString(key));
        }

        /**
         * 从资源文件中返回字符串 我们不希望程序崩溃,所以如果没有找到Key,就直接返回Key
         */
        public static String getString(String key, Object[] args) {
            try {
                return MessageFormat.format(getString(key), args);
            } catch (Exception e) {
                log.error(e.toString());
                e.printStackTrace();
                return "";
            }
        }
    }

    (2)

    public class PinjiaMappingJacksonJsonView extends MappingJacksonJsonView {

        protected Object filterModel(Map<String, Object> model) {
            Map<?, ?> result = (Map<?, ?>) super.filterModel(model);
            if (result.size() == 1) {
                return result.values().iterator().next();
            } else {
                return result;
            }
        }
    }
    (3)

    /**
     * 文字短信验证码类型枚举类
     *title:
     *@author taotk
     *@2016年8月12日
     *@company www.51pinjia.com
     */
    public enum ESMSType {
        Register("注册验证"), Login("登录验证"), Change("变更验证"), Id("身份验证"), Active("活动验证"), Pass("变更验证");
        private String title;

        private ESMSType(String title) {
            this.title = title;
        }

        public static ESMSType valueof(int index) {
            return ESMSType.values()[index];
        }

        public String getTitle() {
            return title;
        }
    }

    (4)

    /**
     * 文字短信验证码数据类型类型枚举类
     *title:
     *@author taotk
     *@2016年8月12日
     *@company www.51pinjia.com
     */
    public enum ESMSDataType {
        Json("json"), Xml("xml");
        private String title;

        private ESMSDataType(String title) {
            this.title = title;
        }

        public static ESMSDataType valueof(int index) {
            return ESMSDataType.values()[index];
        }

        public String getTitle() {
            return title;
        }
    }

     


        
       

     

  • 相关阅读:
    数据结构化与保存
    使用正则表达式,取得点击次数,函数抽离
    爬取校园新闻首页的新闻
    网络爬虫基础练习
    Hadoop综合大作业
    理解MapReduce
    熟悉常用的HBase操作
    熟悉常用的HDFS操作
    爬虫大作业
    数据结构化与保存
  • 原文地址:https://www.cnblogs.com/taotingkai/p/5765940.html
Copyright © 2011-2022 走看看