網站登錄密碼忘記后,通過向手機發送驗證碼實現找回密碼的實現方法


今天我想了一天如何實現網站用戶在忘記了密碼后,如何通過向手機發送驗證碼來重新設置密碼。驗證碼的驗證以及生成都已經做好了,現在主要是解決如何向用戶手機發送短信。顯然這需要一個第三方提供的短信接口,來幫助我們實現向用戶手機發送驗證碼短信。這里有一個非常好的第三方借口。連接地址:http://www.xhsms.com/jiekou.aspx。他提供了一個很好的短信接口,簡單易用。下面是我自己參考寫的一段測試代碼:

 

package com.im;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;

public class SmsBase {

	private Integer x_eid = 0;//會員企業ID號,個人用戶為0
	private String x_uid = "yourname";//會員賬號
	private String x_pwd_md5 = "e10adc3949ba59abbe56e057f20f883e";//登陸密碼的MD5值32位
	private Integer x_gate_id = 300;//發送短信時通道ID,通道發送失敗可以切換其它通道,無該值系統使用默認通道
	
	public String SendSms(String mobile, String content) throws UnsupportedEncodingException{
		
		Integer x_ac = 10;//發送信息
		HttpURLConnection httpconn = null;
		String x_memo = content.trim();//發送短信內容
		StringBuilder sb = new StringBuilder();
		
		sb.append("http://gateway.woxp.cn:6630/utf8/web_api/?x_eid=");
		sb.append(x_eid);
		sb.append("&x_uid=").append(x_uid);
		sb.append("&x_pwd_md5=").append(x_pwd_md5);
		sb.append("&x_ac=").append(x_ac);
		sb.append("&x_gate_id=").append(x_gate_id);
		sb.append("&x_target_no=").append(mobile);
		sb.append("&x_memo=").append(URLEncoder.encode(x_memo, "utf-8"));
		
		String result = "-20";
		System.out.println(sb.toString());
		try {
			URL url = new URL(sb.toString());
			httpconn = (HttpURLConnection) url.openConnection();
			BufferedReader rd = new BufferedReader(new InputStreamReader(httpconn.getInputStream()));
			result = rd.readLine();
			rd.close();
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally{
			if(httpconn != null){
				httpconn.disconnect();
				httpconn = null;
			}
		}
		return result;
	}
	
	public static void main(String[] args) {
		String mobile="18782962370";
		String content="Hello";
		try {
			String result = new SmsBase().SendSms(mobile, content);
			System.out.println(result);
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
	}
}

 



網頁中參數詳細列表
編號 參數名稱 參數說明 是否必須
1 x_eid 會員企業ID號,個人用戶為0
2 x_uid 會員賬號
3 x_pwd_md5 登陸密碼的MD5值
4 x_new_pwd 修改密碼時需要此參數。代表要變更的新密碼
5 x_sub_id 擴展子號碼,發送短信時需要,根據通道是否支持子號碼擴展而提供
6 x_target_no 接受者號碼,多個號碼用“,”分開
7 x_memo 短信發送內容.長度請參考通道說明(必須使用URL編碼)
8 x_send_time 定時短信,格式YYYY-MM-DD HH:MM:SS,24小時制.值為空或無該參數代表立即發送
9 x_gate_id 發送短信時通道ID,通道發送失敗可以切換其它通道,無該值系統使用默認通道
10 x_ac 本此提交的行為。比如是發送短信。查詢余額,參數值如下

 

 



參數x_ac(提交動作)值
編號 說明
1 10 發送短信。返回失敗或成功
2 12 長短信發送,最多支持450字符發送.64字每條計費.(請使用POST方式提交參數)
3 20 查詢上行短信,分主動(客戶自已獲取)和被動(我們推送到指定地址)兩種方式
1.被動接收客戶.需要提交接收上行短信的URL地址(POST+XML)方式內容utf-8編碼
2.主動接收短信,直接調用AC=20即可.
被動接收提示: .NET文件調用.需要在頭設置ValidateRequest="false"參數.否則返回HTTP 500服務器內部錯誤
4 30 查詢當前戶剩余條數
5 40 獲取指定通道的關鍵字屏蔽字符串,發送前先過濾關鍵字再提交



參數x_ac=10發送短信時。返回值
編號 說明
1 大於0 發送成功,此次發送成功條數
2 -1 參數無效
3 -2 通道不存在或者當前業務不支持此通道
4 -3 定時格式錯誤
5 -4 接收號碼無效
6 -5 提交號碼個數超過上限,每個通道都有批量提交的上限.詳細值請參考通道說明
7 -6 發送短信內容長度不符合要求,參考通道要求長度
8 -7 當前賬戶余額不足
9  -8 網關發送短信時出現異常
10  -9 用戶或者密碼沒輸入
11  -10 企業ID或者會員賬號不存在
12  -11 密碼錯誤
13  -12 賬戶鎖定
14  -13 網關狀態關閉
15  -14 驗證用戶時執行異常
16  -15 網關初始化失敗
17 -16 當前IP已被系統屏蔽,可能是與您設置的接入IP不同或者是失敗次數太多
18 -17 發送異常
19 -18 賬號未審核
20 -19 當前時間不允許此通道工作,主要對群發通道限制
21 -20 傳輸密鑰未設置,請登陸平台設置
22 -21 提取密鑰異常
23 -22 簽名驗證失敗
24 -23 發現屏蔽關鍵字
25 -100到-199 運營商返回失敗代碼

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM