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。。。