簡訊驗證碼介面的實現
阿新 • • 發佈:2019-02-07
程式碼:
sendsms.java
//介面型別:互億無線觸發簡訊介面,支援傳送驗證碼簡訊、訂單通知簡訊等。 // 賬戶註冊:請通過該地址開通賬戶http://sms.ihuyi.com/register.html // 注意事項: //(1)除錯期間,請用預設的模板進行測試,預設模板詳見介面文件; //(2)請使用APIID(檢視APIID請登入使用者中心->驗證碼、通知簡訊->帳戶及簽名設定->APIID)及 APIkey來呼叫介面,APIkey在會員中心可以獲取; import java.io.IOException; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpException; import org.apache.commons.httpclient.NameValuePair; import org.apache.commons.httpclient.methods.PostMethod; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; public class sendsms { private static String Url = "http://106.ihuyi.cn/webservice/sms.php?method=Submit"; public static void main(String [] args) { HttpClient client = new HttpClient(); PostMethod method = new PostMethod(Url); client.getParams().setContentCharset("GBK"); method.setRequestHeader("ContentType","application/x-www-form-urlencoded;charset=GBK"); int mobile_code = (int)((Math.random()*9+1)*100000); //隨機數生成驗證碼 String content = new String("您的驗證碼是:" + mobile_code + "。請不要把驗證碼洩露給其他人。"); NameValuePair[] data = {//提交簡訊 new NameValuePair("account", "C22613578"), //檢視使用者名稱請登入使用者中心->驗證碼、通知簡訊->帳戶及簽名設定->APIID new NameValuePair("password", "6dd1851e2511a426ee60a8b7177d33e"), //檢視密碼請登入使用者中心->驗證碼、通知簡訊->帳戶及簽名設定->APIKEY //new NameValuePair("password", util.StringUtil.MD5Encode("密碼")), //根據需要,可能要對密碼進行加密 new NameValuePair("mobile", "18953532734"), //要傳送驗證碼的手機號 new NameValuePair("content", content), }; method.setRequestBody(data); try { client.executeMethod(method); String SubmitResult =method.getResponseBodyAsString(); //System.out.println(SubmitResult); Document doc = DocumentHelper.parseText(SubmitResult); Element root = doc.getRootElement(); String code = root.elementText("code"); String msg = root.elementText("msg"); String smsid = root.elementText("smsid"); System.out.println(code); System.out.println(msg); System.out.println(smsid); if("2".equals(code)){ System.out.println("簡訊提交成功"); } } catch (HttpException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (DocumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
StringUtil.java(工具類,備用)
package util; import java.security.MessageDigest; public class StringUtil { public static String str; public static final String EMPTY_STRING = ""; private final static String[] hexDigits = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F" }; private static String byteToHexString(byte b) { int n = b; if (n < 0) n = 256 + n; int d1 = n / 16; int d2 = n % 16; return hexDigits[d1] + hexDigits[d2]; } /** * 轉換位元組陣列為16進位制字串 * @param b 位元組陣列 * @return 16進位制字串 */ public static String byteArrayToHexString(byte[] b) { StringBuffer resultSb = new StringBuffer(); for (int i = 0; i < b.length; i++) { resultSb.append(byteToHexString(b[i])); } return resultSb.toString(); } public static String MD5Encode(String origin) { String resultString = null; try { resultString = new String(origin); MessageDigest md = MessageDigest.getInstance("MD5"); resultString = byteArrayToHexString(md.digest(resultString .getBytes())); } catch (Exception ex) { } return resultString; } }
使用者收到的簡訊驗證碼: