基于springboot的短信认证

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;

import java.util.Random;

/**
 * 2019/8/15
 * Created by z
 * 短信发送 使用的是百度SMS短信通 官网:http://sms.webchinese.cn/
 */
public class SendMsg {
    private static final String SMS_Url = "http://sms.webchinese.cn/web_api/";

    /**
     * @param Uid SMS用户id  : userId
     * @param Key 接口秘钥:SMS登录可查(非登录密码)
     * @param sendPhoneNum 短信发送目标号码
     * @param desc 短信内容
     * @return Integer(1:成功码,其他失败,具体参见注释)
     */
    public static Integer send(String Uid,String Key,String sendPhoneNum,String desc){

        HttpClient client = new HttpClient();
        PostMethod post = new PostMethod(SMS_Url);
        post.addRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=gbk");// 在头文件中设置转码

        //设置参数
        NameValuePair[] data = {
                new NameValuePair("Uid", Uid),
                new NameValuePair("Key", Key),//秘钥
                new NameValuePair("smsMob", sendPhoneNum),
                new NameValuePair("smsText", desc)
        };

        post.setRequestBody(data);

        try {
            client.executeMethod(post);
        } catch (Exception e) {  e.printStackTrace();  }


       // Header[] headers = post.getResponseHeaders();
      //  int statusCode = post.getStatusCode();
    //    System.out.println("statusCode:" + statusCode);
//        for (Header h : headers) {
//            System.out.println(h.toString());
//        }

        String result ="";
        try {
            result = new String(post.getResponseBodyAsString().getBytes("gbk"));
        } catch (Exception e) {  e.printStackTrace();  }

        post.releaseConnection();

        return Integer.parseInt(result);
    }
    /**
     *  -1  没有该用户账户
     -2 接口密钥不正确 [查看密钥]不是账户登陆密码
     -21    MD5接口密钥加密不正确
     -3 短信数量不足
     -11    该用户被禁用
     -14    短信内容出现非法字符
     -4 手机号格式不正确
     -41    手机号码为空
     -42    短信内容为空
     -51    短信签名格式不正确接口签名格式为:【签名内容】
     -6 IP限制
     大于0    短信发送数量
     以上作为补充
     */
    public static String getMessage(Integer code){
        String message;
        if(code > 0 ) {
            message = "SMS发送" + code + "条成功";
        }else if(code == -1){
            message = "SMS-没有该用户账户";
        }else if(code == -2){
            message = "SMS-接口密钥不正确";
        }else if(code == -21){
            message = "SMS-MD5接口密钥加密不正确";
        }else if(code == -3){
            message = "SMS-短信数量不足";
        }else if(code == -11){
            message = "SMS-该用户被禁用";
        }else if(code == -14){
            message = "SMS-短信内容出现非法字符";
        }else if(code == -4){
            message = "SMS-手机号格式不正确";
        }else if(code == -41){
            message = "SMS-手机号码为空";
        }else if(code == -42){
            message = "SMS-短信内容为空";
        }else if(code == -51){
            message = "SMS-短信签名格式不正确接口签名格式为:【签名内容】";
        }else if(code == -6){
            message = "SMS-IP限制";
        }else if(code == -52){
            message = "SMS-短信签名太长";
        }else{
            message = "其他错误";
        }
        return message;
    }

    /**
     * 随机生成6位验证码
     * @return
     */
    public static String getRandomCode(Integer code){
        Random random = new Random();
        StringBuffer result= new StringBuffer();
        for (int i=0;i<code;i++){
            result.append(random.nextInt(10));
        }
        return result.toString();
    }

    public static void main(String[] args) {
        //SendMsg.send("SMS账户","接口秘钥","目标号码","发送内容");
        Integer resultCode = SendMsg.send("10086_sms","d41接口秘钥","10085222","基于springboot的验证码"+getRandomCode(4));
        System.out.println(SendMsg.getMessage(resultCode));
    }
}
//region 项目依赖
//<dependencies>
//<dependency>
//<groupId>commons-logging</groupId>
//<artifactId>commons-logging</artifactId>
//<version>1.1.1</version>
//</dependency>
//<dependency>
//<groupId>commons-codec</groupId>
//<artifactId>commons-codec</artifactId>
//<version>1.4</version>
//</dependency>
//<dependency>
//<groupId>commons-httpclient</groupId>
//<artifactId>commons-httpclient</artifactId>
//<version>3.0.1</version>
//</dependency>
//</dependencies>
//endregion

 

posted @ 2019-08-16 22:38  Angry-rookie  阅读(164)  评论(0)    收藏  举报