一個程序猿成長記:網易雲短信接口開發

PS:結合文檔,百度網羅各方資源,終於完成短信接口開發,廢話不多說,直接上代碼!

一、生成CheckSum校驗

import java.security.MessageDigest;
/**
 * 網易雲短信工具類
 * @author dayun.wang
 *
 */
public class CheckSumBuilder {
    // 計算並獲取CheckSum
    public static String getCheckSum(String appSecret, String nonce, String curTime) {
        return encode("lol", appSecret + nonce + curTime);
    }

    // 計算並獲取md5值
    public static String getMD5(String requestBody) {
        return encode(“md5”, requestBody);
    }

    private static String encode(String algorithm, String value) {
        if (value == null) {
            return null;
        }
        try {
            MessageDigest messageDigest
                    = MessageDigest.getInstance(algorithm);
            messageDigest.update(value.getBytes());
            return getFormattedText(messageDigest.digest());
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
    private static String getFormattedText(byte[] bytes) {
        int len = bytes.length;
        StringBuilder buf = new StringBuilder(len * 2);
        for (int j = 0; j < len; j++) {
            buf.append(HEX_DIGITS[(bytes[j] >> 4) & 0x0f]);
            buf.append(HEX_DIGITS[bytes[j] & 0x0f]);
        }
        return buf.toString();
    }
    private static final char[] HEX_DIGITS = { '0', '1', '2', '3', '4', '5',
            '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
}
二、發送驗證碼

     1、 參數說明

      

       2、發送驗證碼

          APPSECRET:密鑰

          NONCE:隨機數(自己定義)

          WYYURlSEND:請求action(https://api.netease.im/sms/sendcode.action)


                 /**

	 * 發送驗證碼模板
	 * 
	 * @author dayun.wang
	 * @version 1.0.0
	 * @param str
	 *            發送驗證碼
	 * @return true or false
	 * @throws IOException 
	 * */
	public static Integer getSendcode(String mobile) throws IOException{
		 String curTime = String.valueOf((new Date()).getTime() / 1000L); // 當前UTC時間戳
		 String checkSum = CheckSumBuilder.getCheckSum(Constant.APPSECRET, Constant.NONCE, curTime);
		 String params = "templateid="+Constant.WYYTEMPLATID+"&mobile="+mobile;
		 URL realUrl;
		 URLConnection conn;
		 PrintWriter out = null;
		 BufferedReader in = null;
	     String result = "";
		 // 返回碼 200、301、315、403、404、413、414、500
		 String code="500";
		try {
			realUrl = new URL(Constant.WYYURlSEND);//https://api.netease.im/sms/sendcode.action
			conn = realUrl.openConnection();
			
			// 請求頭文件
			conn.setRequestProperty("AppKey", Constant.APPKEY);
			conn.setRequestProperty("CurTime", curTime);
			conn.setRequestProperty("CheckSum", checkSum);
			conn.setRequestProperty("Nonce", Constant.NONCE);
			conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
			
			// 設置post請求
			conn.setDoOutput(true);
            conn.setDoInput(true);
            // 獲取對象的輸出流
            out = new PrintWriter(conn.getOutputStream());
            // 發送參數
            out.print(params);
            out.flush();
            // 讀取響應信息
            in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String line;
            while ((line = in.readLine()) != null)
            {
                result += line;
            }
            // 獲取發送狀態
            code = JSON.parseObject(result).getString("code").toString();
		} catch (MalformedURLException e) {
			e.printStackTrace();
		}finally{
			out.close();
		    in.close();
		}
        return Integer.valueOf(code);
	}

三、短信驗證

       1、參數說明:

               WYYURlVERIFY:請求action(https://api.netease.im/sms/verifycode.action)

               

         /**
	 * 校驗驗證碼模板
	 * 
	 * @author dayun.wang
	 * @version 1.0.0
	 * @param str
	 *            校驗驗證碼
	 * @return true or false
	 * @throws IOException 
	 * */
	public static Integer getVerifyCode(String mobile,String value) throws IOException{
		 String curTime = String.valueOf((new Date()).getTime() / 1000L); // 當前UTC時間戳
		 String checkSum = CheckSumBuilder.getCheckSum(Constant.APPSECRET, Constant.NONCE, curTime);
		 String params = "mobile="+mobile+"&code="+value;
		 URL realUrl;
		 URLConnection conn;
		 PrintWriter out = null;
		 BufferedReader in = null;
	         String result = "";
		 String code="500";
		 try {
			realUrl = new URL(Constant.WYYURlVERIFY);
			conn = realUrl.openConnection();
			
		   conn.setRequestProperty("AppKey", Constant.APPKEY);
		   conn.setRequestProperty("CurTime", curTime);
		   conn.setRequestProperty("CheckSum", checkSum);
		   conn.setRequestProperty("Nonce", Constant.NONCE);
		   conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
		   conn.setDoOutput(true);
           conn.setDoInput(true);
           
           out = new PrintWriter(conn.getOutputStream());
           out.print(params);
           out.flush();
           in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
           String line;
           while ((line = in.readLine()) != null)
           {
               result += line;
           }
           code = JSON.parseObject(result).getString("code").toString();
		} catch (MalformedURLException e) {
		   e.printStackTrace();
		}finally{
		   out.close();
	       in.close();
		}
       return Integer.valueOf(code);
	}

四、自定義短信模板

                 1、參數說明

                         WYYSENDTEMPLATE:請求action(https://api.netease.im/sms/sendtemplate.action)

                 

         /**
	 * 自定義模板
	 * 
	 * @author dayun.wang
	 * @version 1.0.0
	 * @param str
	 *            重置密碼
	 * @return true or false
	 * @throws IOException 
	 * */
	public static Integer getResetPassword(String mobile,String password) throws IOException{
		 String curTime = String.valueOf((new Date()).getTime() / 1000L); // 當前UTC時間戳
		 String checkSum = CheckSumBuilder.getCheckSum(Constant.APPSECRET, Constant.NONCE, curTime);
		 String params = "templateid="+Constant.WYYSENDTEMPLATECODE+"&mobiles=[\""+mobile+"\"]¶ms=[\""+password+"\"]";
		 URL realUrl;
		 URLConnection conn;
		 PrintWriter out = null;
		 BufferedReader in = null;
	     String result = "";
		 // 返回碼 200、301、315、403、404、413、414、500
		 String code="500";
		try {
			realUrl = new URL(Constant.WYYSENDTEMPLATE);
			conn = realUrl.openConnection();
			
			conn.setRequestProperty("AppKey", Constant.APPKEY);
			conn.setRequestProperty("CurTime", curTime);
			conn.setRequestProperty("CheckSum", checkSum);
			conn.setRequestProperty("Nonce", Constant.NONCE);
			conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
			conn.setDoOutput(true);
            conn.setDoInput(true);
            
            out = new PrintWriter(conn.getOutputStream());
            out.print(params);
            out.flush();
            in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String line;
            while ((line = in.readLine()) != null)
            {
                result += line;
            }
            code = JSON.parseObject(result).getString("code").toString();
		} catch (MalformedURLException e) {
			e.printStackTrace();
		}finally{
			out.close();
		    in.close();
		}
        return Integer.valueOf(code);
	}

五、最後

      20條試用短信省着點用,20條試用短信省着點用,20條試用短信省着點用,重要的事說三遍!要買得40000條開始,madan。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章