短信发送api示例

首先说一下短信验证的使用场景。
       1、与账户信息相关的操作,如修改支付宝账号等
       2、与资金流转相关的操作,如提现等
       只有在以上两种场景下,短信验证才会起到作用。即提交相关操作的时候,附带一个验证码。
       在本项目中,使用的短信平台是云片网。本文会举一个例子来演示短信:

流程

1、云片网上的短信是通过一个http请求触发的。

    // 通用发送接口的http地址
    private static String URI_SEND_SMS = "http://yunpian.com/v1/sms/send.json";

    //模板发送接口的http地址
    private static String URI_TPL_SEND_SMS = "https://sms.yunpian.com/v1/sms/tpl_send.json";

    //发送语音验证码接口的http地址
    private static String URI_SEND_VOICE = "https://voice.yunpian.com/v1/voice/send.json";

     /**
     * 基于HttpClient 4.3的通用POST方法
     *
     * @param url
     *            提交的URL
     * @param paramsMap
     *            提交<参数,值>Map
     * @return 提交响应
     */
    public static String post(String url, Map<String, String> paramsMap) {
        StringBuilder str=new StringBuilder("调用发送短信外部接口:post-->");
        CloseableHttpClient client = HttpClients.createDefault();
        String responseText = "";
        CloseableHttpResponse response = null;
        try {
            HttpPost method = new HttpPost(url);
            if (paramsMap != null) {
                List<NameValuePair> paramList = new ArrayList<NameValuePair>();
                for (Map.Entry<String, String> param : paramsMap.entrySet()) {
                    NameValuePair pair = new BasicNameValuePair(param.getKey(),
                            param.getValue());
                    paramList.add(pair);
                }
                method.setEntity(new UrlEncodedFormEntity(paramList, ENCODING));
            }
            response = client.execute(method);
            HttpEntity entity = response.getEntity();
            if (entity != null) {
                responseText = EntityUtils.toString(entity);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                response.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        str.append("responseText:").append(responseText).append("_");
        System.out.println("responseText:"+responseText);
        return responseText;
    }

1、在云片网上注册一个帐号,购买相应的服务。
2、设置发送短信的模版
       模版的组成部分:【签名】+短信正文
       先要申请签名。签名通过之后,在使用该签名添加模版。
       格式如:【XXX】亲爱的用户,您的注册码是#code#。如非本人操作,请忽略此短信。
3、三种不同的方式
       1)发送模版的时候,可以以text文本发送,即发送的时候text与模版进行匹配

    /**
     * 使用模版匹配方式发短信
     *
     * @param apikey    apikey(来自云片网的账户信息)
     * @param text   短信内容
     * @param mobile   接受的手机号
     * @return json格式字符串
     * @throws IOException
     */
    public static String sendSms(String apikey, String text, String mobile)
            throws IOException {
        Map<String, String> params = new HashMap<String, String>();

        //短信验证码——模糊匹配方式
        params.put("apikey", apikey);
        params.put("text", text);
        params.put("mobile", mobile);
        return post(URI_SEND_SMS, params);
    }

       2)另一种方式是,直接指定模版id进行发送

    /**
     * 指定模版发短信
     *
     * @param apikey    apikey(来自云片网的账户信息)
     * @param tpl_id   模版id
     * @param tpl_value  模版中的通配符
     * @param mobile   接受的手机号
     * @return json格式字符串
     * @throws IOException
     */
    public static String sendSms(String apikey, String text, String mobile)
            throws IOException {
        Map<String, String> params = new HashMap<String, String>();

        //短信验证码——使用模版
        params.put("apikey", apikey);
        params.put("tpl_id", "994567"); //模版id
        params.put("tpl_value", "#code#=1234");
        params.put("mobile", mobile);
        return post(URI_TPL_SEND_SMS, params);
    }

       3)使用语音播报的方式

    /**
     * 使用语音播报的方式
     *
     * @param apikey    apikey(来自云片网的账户信息)
     * @param code  验证码
     * @param mobile   接受的手机号
     * @return json格式字符串
     * @throws IOException
     */
    public static String sendSms(String apikey, String text, String mobile)
            throws IOException {
        Map<String, String> params = new HashMap<String, String>();

        //使用语音播报
        params.put("apikey", apikey);
        params.put("mobile", mobile);
        params.put("code", "456789");
        return post(URI_SEND_VOICE, params);
    }

调用发送短信:

    public static void main(String[] args) throws IOException {
        String apikey = "云片网上的apikey"
        String text = "【签名】您的验证码是";
        String code = "";

        Random random = new Random();
        for (int i = 0; i < 6; i++) {
            code += random.nextInt(10);
        }
        text = text + code;
        sendSms(apikey, text, "187XXXX5771");//手机号
        System.out.println("code:" + code);
    }

       短信发送,算是一块成熟的技术。所以肯定有第三方程序已经提供了。我们需要做的就是找到这些程序,把他们提供的使用到我们的项目中。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
接口说明:   这里介绍的是利用清扬短信服务器软件发短信接口。   清扬短信服务器软件是一个利用了短信猫(Gsm Modem)来收发短信的软件,并支持繁体、日语等多语言短信发送,在某些环境下,比如:在隔离网络中,似乎是收发短信的主要选择。   北京清扬创新提供了一个qyVDevApi.dll,用此dll可建立和短信服务器的沟通。 API接口介绍   int qvdSendSm( void * p0, WCHAR * sm, char * phoneNo, HWND hWnd_notify, int iUsrData ); 参数说明:      p0, 保留      sm, 要发送短信文本, 字符串      phoneNo, 手机号码, 要加区号; 比如: 8613146630221      hWnd_notify, 可收发送后通知的窗口句柄      iUsrData, 一个用户定义的标识 注意: 1.短信服务器发送短信后,将用WM_COPYDATA的消息发送一个响应包到hWnd_notify, 响应包格式如下:    typedef struct __qvdSmResp_t {      int id;      int iErr;    } QVD_SM_RESP; 2. hWnd_notify不是必需的,如果对响应包不感兴趣,不用传入。 如何使用: 1.硬件:把自备短信猫GSM MODEM接入电脑。选择合适的型号,请参看:如何为清扬即时通信挑选短信猫(GSM MODEM)和测试发送短信。 2.软件:用清扬短信服务器软件控制短信发送短信。下载软件,请参看:清扬短信服务器软件快速入门。也有flash视频教程可以更直观地掌握如何使用。 3.软件设置:在利用API短信服务器发送短信前,要打开菜单[配置]/[个性化策略]里,设置“允许第三方软件发送短信”,(参看http://www.qycx.com/qyexample-sm.htm)。同时注意: 此设置必须在管理员权限下才能设置(否则该设置自动变灰)。 4.编程:使用发送短信API接口编译测试。API接口例子程序,请参看本文章:清扬短信服务器发送短信API接口说明和例子程序,下载例子:qySrc_smDemo,可以编译测试。该例子qySrc_smDemo利用动态装载将dll装入,找到相关函数地址,即可在后面调用。在使用时,注意将dll目录下的qyVDevApi.dll拷在生成的qyVDevSample.exe同一个目录下。 其他说明: 硬件上,如果短信猫gsm modem的波特率不是9600,请在清扬短信服务器软件管理界面的菜单[配置]/[个性化配置]里,重设波特率(baud),(参看http://www.qycx.com/qyexample-sm.htm)。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值