1.松耦合可拓展短信驗證碼一般需要三張表,msg(短信記錄表)msg_cfg(短信記錄與模板關聯表)msg_form(短信模板表)
package com.qianmo.qmyj.bean.dto; /** * 短信驗證碼表 */ public class Msg { private String moblNo;//手機號 private String msgCodeType;//驗證碼類型 private String msgCode;//驗證碼 private String aplDateTime;//短信申請時間 private String expDateTime;//短信失效時間 private String useStat;//使用狀態 public String getMoblNo() { return moblNo; } public void setMoblNo(String moblNo) { this.moblNo = moblNo == null ? null : moblNo.trim(); } public String getMsgCodeType() { return msgCodeType; } public void setMsgCodeType(String msgCodeType) { this.msgCodeType = msgCodeType == null ? null : msgCodeType.trim(); } public String getMsgCode() { return msgCode; } public void setMsgCode(String msgCode) { this.msgCode = msgCode == null ? null : msgCode.trim(); } public String getAplDateTime() { return aplDateTime; } public void setAplDateTime(String aplDateTime) { this.aplDateTime = aplDateTime == null ? null : aplDateTime.trim(); } public String getExpDateTime() { return expDateTime; } public void setExpDateTime(String expDateTime) { this.expDateTime = expDateTime == null ? null : expDateTime.trim(); } public String getUseStat() { return useStat; } public void setUseStat(String useStat) { this.useStat = useStat == null ? null : useStat.trim(); } }
package com.qianmo.qmyj.bean.dto; /** * 短信驗證碼配置表 */ public class MsgCfg { private String sceneCode;//場景編號 private String msgFormId;//信息模版ID public String getSceneCode() { return sceneCode; } public void setSceneCode(String sceneCode) { this.sceneCode = sceneCode == null ? null : sceneCode.trim(); } public String getMsgFormId() { return msgFormId; } public void setMsgFormId(String msgFormId) { this.msgFormId = msgFormId == null ? null : msgFormId.trim(); } }
package com.qianmo.qmyj.bean.dto; /** * 短信驗證碼模版表 */ public class MsgForm { private String msgFormId;//信息模版ID private String sceneCode;//場景編號 private String msgFormDtl;//信息模版內容 public String getMsgFormId() { return msgFormId; } public void setMsgFormId(String msgFormId) { this.msgFormId = msgFormId == null ? null : msgFormId.trim(); } public String getSceneCode() { return sceneCode; } public void setSceneCode(String sceneCode) { this.sceneCode = sceneCode == null ? null : sceneCode.trim(); } public String getMsgFormDtl() { return msgFormDtl; } public void setMsgFormDtl(String msgFormDtl) { this.msgFormDtl = msgFormDtl == null ? null : msgFormDtl.trim(); } }
接下來聯系短信服務商,購買短信,查看第三方api文檔,下載一個demo測試。
下面是我在此項目中寫的短信驗證碼,controller
package com.qianmo.qmyj.controller; import com.qianmo.qmyj.bean.request.GetMsgRequest; import com.qianmo.qmyj.bean.request.JPushRequest; import com.qianmo.qmyj.bean.response.GetMsgResponse; import com.qianmo.qmyj.bean.response.JPushResponse; import com.qianmo.qmyj.framework.util.QMDateUtil; import com.qianmo.qmyj.service.JPushService; import com.qianmo.qmyj.service.UserInfoExecuteService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; import javax.validation.Valid; /*import com.qianmo.pageDao.JPushUtil;*/ /*import com.qianmo.pageDao.JPushUtil;*/ /** * 短信驗證 */ @Controller @RequestMapping(value = "/sendSMSController") public class sendSMSController extends BaseController { private Logger logger = LoggerFactory.getLogger(getClass()); @Resource private UserInfoExecuteService userInfoExecuteService;/** * 發送短信驗證碼 */ @RequestMapping(value = "/toSendSMS", method = RequestMethod.POST) @ResponseBody public GetMsgResponse toSendSMS(@Valid GetMsgRequest request) { logger.info("發送短信驗證碼接口開始處理:" + QMDateUtil.getYYYY_MM_DD_HH_MM_SS_CN() + ""); return userInfoExecuteService.getMsg(request); } }
serviceImpl
package com.qianmo.qmyj.service.impl; import com.qianmo.qmyj.bean.dto.Msg; import com.qianmo.qmyj.bean.dto.PushMessage; import com.qianmo.qmyj.bean.dto.UserInfo; import com.qianmo.qmyj.bean.request.*; import com.qianmo.qmyj.bean.response.*; import com.qianmo.qmyj.common.Constants; import com.qianmo.qmyj.common.GenerateUserId; import com.qianmo.qmyj.common.util.MD5Util; import com.qianmo.qmyj.common.util.MsgCodeUtil; import com.qianmo.qmyj.dao.MsgDao; import com.qianmo.qmyj.dao.PushMessageDao; import com.qianmo.qmyj.dao.UserInfoDao; import com.qianmo.qmyj.framework.util.DataVerifyUtil; import com.qianmo.qmyj.framework.util.QMDateUtil; import com.qianmo.qmyj.service.UserInfoExecuteService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; /** * Created by Administrator on 2017/5/4. */ @Service("userInfoExecuteService") public class UserInfoExecuteServiceImpl implements UserInfoExecuteService { private Logger logger = LoggerFactory.getLogger(getClass()); @Resource private MsgDao msgDao; @Resource private UserInfoDao userInfoDao; @Resource private MsgCodeUtil msgCodeUtil; @Resource private PushMessageDao pushMessageDao; @Override public GetMsgResponse getMsg(GetMsgRequest request) { logger.info("————————發送短信驗證碼接口:"+request); String msgCode = MsgCodeUtil.generateMsgCode();//生成短信驗證碼 String msgContext = msgCodeUtil.genSmsContext(request.getOprFlag(), msgCode); Msg msg = new Msg(); GetMsgResponse response = new GetMsgResponse(); msg.setAplDateTime(MsgCodeUtil.getStartTime()); msg.setExpDateTime(MsgCodeUtil.getEndTime()); msg.setMoblNo(request.getMobileNumber());//手機號 msg.setMsgCode(MsgCodeUtil.generateMsgCode()); msg.setUseStat(Constants.MSG_CODE.UN_USE); msg.setMsgCodeType(Constants.msgSence.get(request.getOprFlag())); msg.setAplDateTime(QMDateUtil.getYYYYMMDDHHMMSS());//生成時間 msg.setMsgCode(msgCode); msgDao.insertOrUpdateMsgCode(msg); //如果此類型的驗證碼存才則修改驗證碼,反之進行添加。 MsgCodeUtil.sendSMSGet(request.getMobileNumber(), msgContext, ""); response.setCode(Constants.SUCCESS_CODE); // response.setMessage(Constants.SUCCESS_MSG); response.setMessage(msgCode); logger.info("————————發送短信驗證碼接口成功"); response.setvCode("msgCode"); return response; } /*** * 注冊 * @param request * @return */ @Override public VerificationResponse registered(VerificationRequest request) { //根據手機號獲取驗證碼信息,判斷是否一樣,獲取到期時間,判斷是否有效,獲取使用狀態,判斷是否已使用 //驗證成功后,修改驗證碼使用狀態。進行修改,然后進行用戶注冊 logger.info("------------------------>注冊接口處理中:" + QMDateUtil.getYYYY_MM_DD_HH_MM_SS_CN() + "<------------------------"); VerificationResponse response = new VerificationResponse(); UserInfo customer = userInfoDao.getCustomerInfoByAccount(request.getMobileNumber()); if (!DataVerifyUtil.isBlank(customer)){ response.setCode(Constants.ERROR_CODE); response.setMessage(Constants.REG.REG_FAIL); return response; } long startTime = System.currentTimeMillis(); Msg msg = msgDao.selectMsgCodeByMoblNoOprFlag(request.getMobileNumber(),Constants.msgType.REG_FAIL);//00為注冊 if (DataVerifyUtil.isBlank(msg)) { response.setCode(Constants.ERROR_CODE); response.setMessage("沒有這條數據。"); return response; } String validTime = QMDateUtil.getYYYYMMDDHHMMSS(); if (!request.getMobileNumber().equals(msg.getMoblNo())){ logger.error("------------------->驗證碼不正確<----------------"); response.setCode("1"); response.setMessage("驗證碼不正確。"); return response; } if (validTime.compareTo(msg.getExpDateTime()) > 0) { response.setCode("2"); response.setMessage("有效期已過。"); return response; } if (msg.getUseStat().equals(Constants.MSG_CODE.ALR_USE)){ response.setCode("3"); response.setMessage("此驗證碼已使用。"); return response; } UserInfo newCus = new UserInfo(); newCus.setUserId(GenerateUserId.moblNoToUserId(request.getMobileNumber()));//用戶編號 newCus.setCrtChannel(Constants.compStatus.compStatus);//渠道 00:app newCus.setMoblNo(request.getMobileNumber()); newCus.setCrtDateTime(QMDateUtil.getYYYYMMDDHHMMSS()); newCus.setCrtUpdTime(QMDateUtil.getYYYYMMDDHHMMSS()); newCus.setLoginPwd((MD5Util.MD5(request.getPassWord())).toUpperCase()); newCus.setSocre(Constants.REG.DEFAULT_SCORE); newCus.setRemark(request.getTermTp());//設備類型 android:android ios:ios newCus.setCertifStat(Constants.REG.DEFAULT_STAT);//身份驗證狀態 newCus.setNewbiePurchaseStat(Constants.REG.BUY_STAT);//新手必備包的購買狀態 newCus.setReminDrugNumber(Constants.REG.BUY_STAT);//剩余葯劑劑量 為0 newCus.setAcctBal(Constants.REG.BUY_STAT);//余額為0 newCus.setAllStar(Constants.REG.BUY_STAT);//總星級為0 newCus.setAvgStart(Constants.REG.BUY_STAT);//平均星級為0 if (userInfoDao.insertCustomer(newCus) < 1) { logger.error("-------------->數據庫執行插入用戶信息失敗<----------"); response.setCode(Constants.ERROR_CODE); response.setMessage(Constants.ERROR_MSG); return response; } logger.info("----------------->注冊成功<-------------"); Msg msg1 = new Msg(); msg1.setMoblNo(msg.getMoblNo());//手機號 msg1.setUseStat(Constants.MSG_CODE.ALR_USE);// 99 已使用 msg1.setMsgCodeType(msg.getMsgCodeType());//00注冊 01修改 int s = msgDao.updateMsgInfo(msg1); if (DataVerifyUtil.isEmptySize(s)){ logger.info("----------------->修改短信狀態失敗<-------------"); response.setCode("3333"); response.setMessage("修改短信狀態失敗"); return response; } response.setCode(Constants.SUCCESS_CODE); response.setMessage(Constants.REG.SUCCESS); response.setUserInfo(newCus); return response; }
}
發送驗證碼第三方工具
1 package com.qianmo.qmyj.common.util; 2 3 import com.qianmo.qmyj.bean.dto.MsgCfg; 4 import com.qianmo.qmyj.bean.dto.MsgForm; 5 import com.qianmo.qmyj.common.CommonConstants; 6 import com.qianmo.qmyj.common.Constants; 7 import com.qianmo.qmyj.dao.MsgCfgDao; 8 import com.qianmo.qmyj.dao.MsgFormDao; 9 import com.qianmo.qmyj.framework.util.DataVerifyUtil; 10 import com.qianmo.qmyj.framework.util.QMDateUtil; 11 import org.slf4j.Logger; 12 import org.slf4j.LoggerFactory; 13 import org.springframework.stereotype.Component; 14 15 import javax.annotation.Resource; 16 import java.io.*; 17 import java.net.MalformedURLException; 18 import java.net.URL; 19 import java.net.URLConnection; 20 import java.net.URLEncoder; 21 import java.text.SimpleDateFormat; 22 import java.util.ArrayList; 23 import java.util.Calendar; 24 import java.util.List; 25 import java.util.Random; 26 27 /** 28 * Created by Administrator on 2017/5/4. 29 */ 30 @Component 31 public class MsgCodeUtil { 32 33 private static Logger logger = LoggerFactory.getLogger(MsgCodeUtil.class); 34 35 36 @Resource 37 private MsgCfgDao msgCfgDao; 38 @Resource 39 private MsgFormDao msgFormDao; 40 41 42 /** 43 * 生成6位隨機數 44 */ 45 public static synchronized String generateMsgCode() { 46 Random random = new Random(); 47 int x = random.nextInt(899999); 48 x = x + 100000; 49 return String.valueOf(x); 50 } 51 52 /** 53 * 獲取短信生成時間 54 * 55 * @return 56 */ 57 public static String getStartTime() { 58 return QMDateUtil.getYYYYMMDDHHMMSS(); 59 } 60 /** 61 * 獲取短信失效時間(5分鍾) 62 * 63 * @return 64 */ 65 public static String getEndTime() { 66 Calendar time = Calendar.getInstance(); 67 /*默認配置短信失效時間為5分鍾,可在CommonConstants.properties中更改*/ 68 time.add(Calendar.MINUTE, Integer.parseInt(CommonConstants.getProperty("MSG_TIME"))); 69 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); 70 return sdf.format(time.getTimeInMillis()); 71 } 72 73 /** 74 * 短信參數list 75 * 76 * @param msgList 77 * @param msgText 78 * @return 79 */ 80 private static String msgCfg(List<String> msgList, String msgText) { 81 for (String str : msgList) 82 msgText = msgText.replaceFirst("t%", str); 83 return msgText; 84 } 85 /** 86 * 生成短信模版 87 * 88 * @param oprFlag 89 * @param msgValidCode 90 * @return 91 */ 92 public String genSmsContext(String oprFlag, String msgValidCode) { 93 // 設置模板類型 94 String msgModeId = Constants.msgModeId.get(oprFlag); 95 96 logger.info("msgModeId:[" + msgModeId + "]"); 97 /**查詢交易消息配置表*/ 98 MsgCfg msgCfg = msgCfgDao.getMsgCfgByPK(msgModeId); 99 if (DataVerifyUtil.isBlank(msgCfg)){ 100 logger.info("沒有符合發送條件的交易" + "SceneCod=" + msgModeId); 101 return null; 102 } 103 /**消息模板表*/ 104 MsgForm msgForm = msgFormDao.selectByPK(msgCfg.getMsgFormId(),msgCfg.getSceneCode()); 105 if (DataVerifyUtil.isBlank(msgForm)) { 106 try { 107 logger.info("msgFormId:" + msgCfg.getMsgFormId() + "sceneCode:" + msgCfg.getSceneCode() + "沒有對應的消息模版表"); 108 throw new Exception("沒有對應的消息模版表"); 109 } catch (Exception e) { 110 e.printStackTrace(); 111 } 112 } 113 114 List<String> msgParam = new ArrayList<>(); 115 // msgParam.add(QMDateUtil.getYYYY_MM_DD_HH_MM_CN()); 116 msgParam.add(CommonConstants.getProperty("MSG_TIME")); // t% 數據庫 短信模板動態有效時間 117 msgParam.add(msgValidCode); // t% 數據庫 短信模板動態驗證碼 118 //你正在進行(青木易家app)注冊,失效時間t%分鍾,驗證碼為: t%。如不是本人操作,請忽略此條信息。 119 //你正在進行(青木易家app)修改登錄密碼,失效時間t%分鍾,驗證碼為: t%。如不是本人操作,請忽略此條信息。 120 return MsgCodeUtil.msgCfg(msgParam, msgForm.getMsgFormDtl()); 121 122 // String msgContext = Constants.msgModeId.get(oprFlag); 123 // msgContext = msgContext + "驗證碼為:" + msgValidCode; 124 // logger.info("模板類型:[" + msgContext + "]"); 125 // return msgContext; 126 } 127 128 129 /** 130 * http get請求 發送方法 其他方法同理 返回值>0 提交成功 131 * 132 * @param Mobile 手機號碼 133 * @param Content 發送內容 134 * @param send_time 定時發送的時間;可以為空,為空時為及時發送 135 * @return 返回值 136 * @throws MalformedURLException 137 * @throws UnsupportedEncodingException 138 */ 139 public static int sendSMSGet(String Mobile, String Content, String send_time) 140 { 141 URL url = null; 142 String CorpID = "XAJS002090";// 賬戶名 143 String Pwd = "xi@2090";// 密碼 144 String send_content = null;// 發送內容 145 try { 146 send_content = URLEncoder.encode( 147 Content.replaceAll("<br/>", " "), "GBK"); 148 url = new URL("https://sdk2.028lk.com/sdk2/BatchSend2.aspx?CorpID=" 149 + CorpID + "&Pwd=" + Pwd + "&Mobile=" + Mobile + "&Content=" 150 + send_content + "&Cell=&SendTime=" + send_time); 151 } catch (MalformedURLException |UnsupportedEncodingException e) { 152 e.printStackTrace(); 153 } 154 BufferedReader in = null; 155 int inputLine = 0; 156 try { 157 System.out.println("開始發送短信手機號碼為 :" + Mobile); 158 in = new BufferedReader(new InputStreamReader(url.openStream())); 159 inputLine = new Integer(in.readLine()).intValue(); 160 } catch (Exception e) { 161 System.out.println("網絡異常,發送短信失敗!"); 162 inputLine = -2; 163 } 164 System.out.println("結束發送短信返回值: " + inputLine); 165 return inputLine; 166 } 167 168 /** 169 * Hppt POST請求發送方法 返回值>0 為 提交成功 170 * 171 * @param Mobile 電話號碼 172 * @param Content 發送內容 173 * @param send_time 定時發送時間,為空時,為及時發送 174 * @return 175 * @throws MalformedURLException 176 * @throws UnsupportedEncodingException 177 */ 178 public static int sendSMSPost(String Mobile, String Content, 179 String send_time) throws MalformedURLException, 180 UnsupportedEncodingException { 181 182 String inputLine = ""; 183 int value = -2; 184 DataOutputStream out = null; 185 InputStream in = null; 186 187 String CorpID = "*******";// 賬戶名 188 String Pwd = "*******";// 密碼 189 String send_content = URLEncoder.encode( 190 Content.replaceAll("<br/>", " "), "GBK");// 發送內容 191 192 String strUrl = "https://sdk2.028lk.com/sdk2/BatchSend2.aspx"; 193 String param = "CorpID=" + CorpID + "&Pwd=" + Pwd + "&Mobile=" + Mobile 194 + "&Content=" + send_content + "&Cell=&SendTime=" + send_time; 195 196 try { 197 198 inputLine = sendPost(strUrl, param); 199 200 System.out.println("開始發送短信手機號碼為 :" + Mobile); 201 202 value = new Integer(inputLine).intValue(); 203 204 } catch (Exception e) { 205 206 System.out.println("網絡異常,發送短信失敗!"); 207 value = -2; 208 209 } 210 211 System.out.println(String.format("返回值:%d", value)); 212 213 return value; 214 } 215 /** 216 * 向指定 URL 發送POST方法的請求 217 * 218 * @param url 發送請求的 URL 219 * @param param 請求參數,請求參數應該是 name1=value1&name2=value2 的形式。 220 * @return 所代表遠程資源的響應結果 221 */ 222 public static String sendPost(String url, String param) { 223 224 PrintWriter out = null; 225 BufferedReader in = null; 226 String result = ""; 227 228 try { 229 URL realUrl = new URL(url); 230 // 打開和URL之間的連接 231 URLConnection conn = realUrl.openConnection(); 232 // 設置通用的請求屬性 233 conn.setRequestProperty("accept", "*/*"); 234 conn.setRequestProperty("connection", "Keep-Alive"); 235 conn.setRequestProperty("user-agent", 236 "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); 237 // 發送POST請求必須設置如下兩行 238 conn.setDoOutput(true); 239 conn.setDoInput(true); 240 // 獲取URLConnection對象對應的輸出流 241 out = new PrintWriter(conn.getOutputStream()); 242 // 發送請求參數 243 out.print(param); 244 // flush輸出流的緩沖 245 out.flush(); 246 // 定義BufferedReader輸入流來讀取URL的響應 247 in = new BufferedReader( 248 new InputStreamReader(conn.getInputStream())); 249 String line; 250 while ((line = in.readLine()) != null) { 251 result += line; 252 } 253 } catch (Exception e) { 254 System.out.println("發送 POST 請求出現異常!" + e); 255 e.printStackTrace(); 256 } 257 // 使用finally塊來關閉輸出流、輸入流 258 finally { 259 try { 260 if (out != null) { 261 out.close(); 262 } 263 if (in != null) { 264 in.close(); 265 } 266 } catch (IOException ex) { 267 ex.printStackTrace(); 268 } 269 } 270 return result; 271 } 272 273 /** 274 * 賬號余額查詢 275 * 276 * @param corpId 賬號 277 * @param pwd 密碼 278 * @return 279 */ 280 public static String getSelSum(String corpId, String pwd) { 281 282 String result = ""; 283 String msg = ""; 284 String strUrl = "https://sdk2.028lk.com/sdk2/SelSum.aspx"; 285 String param = "CorpID=" + corpId + "&Pwd=" + pwd; 286 287 try { 288 289 result = sendPost(strUrl, param); 290 291 if (result.equals("-1")) { 292 msg = "賬號未注冊"; 293 } else if (result.equals("-2")) { 294 msg = "其他錯誤"; 295 } else if (result.equals("-3")) { 296 msg = "密碼錯誤"; 297 } else if (result.equals("-101")) { 298 msg = "調用接口頻率過快(大於30s調用一次)"; 299 } else if (result.equals("-100")) { 300 msg = "IP黑名單"; 301 } else if (result.equals("-102")) { 302 msg = "賬號黑名單"; 303 } else if (result.equals("-103")) { 304 msg = "IP未導白"; 305 } else { 306 msg = String.format("獲取成功!%s", result); 307 } 308 309 System.out.println(msg); 310 311 } catch (Exception e) { 312 313 System.out.println("網絡異常,回復消息獲取失敗!"); 314 315 } 316 317 return result; 318 } 319 320 /** 321 * 獲取禁止發送的號碼 322 * 323 * @param corpId 賬號 324 * @param pwd 密碼 325 * @return 326 */ 327 public static String getNotSend(String corpId, String pwd) { 328 329 String result = ""; 330 String msg = ""; 331 String strUrl = "https://sdk2.028lk.com/sdk2/NotSend.aspx"; 332 String param = "CorpID=" + corpId + "&Pwd=" + pwd; 333 334 try { 335 336 result = sendPost(strUrl, param); 337 338 if (result.equals("-1")) { 339 msg = "賬號未注冊"; 340 } else if (result.equals("-2")) { 341 msg = "其他錯誤"; 342 } else if (result.equals("-3")) { 343 msg = "密碼錯誤"; 344 } else if (result.equals("-101")) { 345 msg = "調用接口頻率過快(大於30s調用一次)"; 346 } else if (result.equals("-100")) { 347 msg = "IP黑名單"; 348 } else if (result.equals("-102")) { 349 msg = "賬號黑名單"; 350 } else if (result.equals("-103")) { 351 msg = "IP未導白"; 352 } else { 353 msg = result; 354 } 355 356 System.out.println(msg); 357 358 } catch (Exception e) { 359 360 System.out.println("網絡異常,禁止號碼獲取失敗!"); 361 362 } 363 364 return result; 365 366 } 367 368 /** 369 * 獲取回復消息 370 * 371 * @param corpId 賬號 372 * @param pwd 密碼 373 * @return 回復消息結果 374 */ 375 public static String getReplyMsg(String corpId, String pwd) { 376 377 String result = ""; 378 String msg = ""; 379 String strUrl = "https://sdk2.028lk.com/sdk2/Get.aspx"; 380 String param = "CorpID=" + corpId + "&Pwd=" + pwd; 381 382 try { 383 384 result = sendPost(strUrl, param); 385 // result ="||15281008413#123#2017-01-04||15281008412#123#2017-01-04||15281008413#121#2017-01-04||15281008410#123#2017-01-04||"; 386 387 if (result == null || result.equals("") || result.length() == 0) { 388 msg = "沒有上行信息"; 389 } 390 391 if (result.equals("-1")) { 392 msg = "賬號未注冊"; 393 } else if (result.equals("-2")) { 394 msg = "其他錯誤"; 395 } else if (result.equals("-3")) { 396 msg = "密碼錯誤"; 397 } else if (result.equals("-101")) { 398 msg = "調用接口頻率過快(大於30s調用一次)"; 399 } else if (result.equals("-100")) { 400 msg = "IP黑名單"; 401 } else if (result.equals("-102")) { 402 msg = "賬號黑名單"; 403 } else if (result.equals("-103")) { 404 msg = "IP未導白"; 405 406 } else { 407 408 msg = String.format("獲取成功!%s", result); 409 410 result = result.replace("||", "|"); 411 412 String[] strArray = result.split("\\|"); 413 String outContent = ""; 414 415 int i = 0; 416 417 for (String str : strArray) { 418 419 if (str.equals("")) 420 continue; 421 422 String[] strConArr = str.split("#"); 423 424 if (strConArr == null || strConArr.length <= 0) 425 continue; 426 427 i = i + 1; 428 429 outContent = String.format("第%d條回復,手機號碼:%s,回復內容:%s,回復時間:%s", 430 i, 431 strConArr[0], 432 strConArr[1], 433 strConArr[2]); 434 435 System.out.println(outContent); 436 437 } 438 } 439 440 System.out.println(msg); 441 442 } catch (Exception e) { 443 444 System.out.println("網絡異常,回復消息獲取失敗!"); 445 446 } 447 448 return result; 449 } 450 451 452 public static void main(String[] args) { 453 MsgCodeUtil.generateMsgCode(); 454 MsgCodeUtil.getStartTime(); 455 MsgCodeUtil.getEndTime(); 456 } 457 }