얼마 전에 한 작은 프로젝트에서 SMS 확인 코드에 로그인 및 등록이 포함되었습니다. 나는 전에 이것을 다루지 않았다. 다른 사람들의 블로그를 읽은 후에는 실제로 이해하지 못했습니다. 이제 제 3 자 SMS 플랫폼을 사용하여 검증 코드를 보내는 기능을 작성하겠습니다.
예를 들어 등록하면이 기사는 SpringMVC+Spring+MyBatis 프레임 워크를 기반으로 SMS 검증 코드 기능을 완료합니다.
SMS 검증 코드를 전송하는 원칙은 다음과 같습니다. 6 자리 숫자를 무작위로 생성하고 6 자리 번호를 세션에 저장하고 클라이언트는 SessionID를 통해 해당 세션을 판단하며 사용자가 입력 한 확인 코드를 세션에서 기록한 확인 코드와 비교합니다.
광고가 의심되는 것을 막기 위해 SMS 플랫폼이 어떤지에 대해서는 이야기하지 않을 것입니다.
일반적으로 타사 SMS 플랫폼에는 자체 SMS 인터페이스가 있습니다. 인터페이스를 이해하고 약간 변경하는 한 귀하의 요구를 충족시킬 수 있습니다.
먼저 SMS 플랫폼 인터페이스 코드 나열 : 여기에서 3 개의 JAR 패키지 Commons-Logging-1.1.1.jar, Commons-HTTPClient-3.1.jar, Commons-Codec-1.4.jar를 다운로드해야합니다.
import java.io.unsupportedencodingException; import org.apache.commons.httpclient.header; import org.apache.commons.httpclient.httpclient; import org.apache.commons.httpclient.namevaluepair; import org.apache.commons.httpclient.methods.postmethod; public class sendmsg_webchinese {public static void main (string [] args)은 예외 {httpclient client = new httpclient (); postmethod = new postmethod ( "http://gbk.smsmsmsmsms.webchines.sedes. // 타사 SMS 서비스 주소 post.addrequestheader ( "content-type", "application/x www-form-urlencoded; charset = gbk"); // transcoding namevaluepair [] data = {new NamevaluePair ( "UID", "이 사이트의 사용자 이름"), New NameValuePair ( "Key", "Interface Security Key"), New NameValuePair ( "SMSMOB", "Mobile Number"), New NameValuePair ( "Smstext", "검증 코드" 8888 ")}; post.setRequestBody (data); client.executemEthod (post); header [] header [] headers = post.getResponseHeaders (); int statusCode = post.getStatusCode (); system.out.println ("statusCode : "+statusCode); for (header h : HEADERS) {System.out.println (h.toString ());} 문자열 result = new String (post.getResponseBodyAsString (). getBytes ( "gbk")); System.out.println (결과); // 반환 메시지 상태 post.releaseConnection ();}}우리가 보내려는 정보 가이 코드 라인에있는 것은 어렵지 않습니다. namevaluepair [] data = {new namevaluepair ( "uid", "site username"), new namevaluepair ( "key", "interface security key"), new namevaluepair ( "smsmob", "mobile phone number"), new namevaluepair ( "smsteatice :" "" "," "", ""valuepair ( "SMSMOB") 8888 ")};
이 인터페이스에는 결과 메시지가 있으며, 이는 사용자에게 SMS를 보내는 상태를 알려주는 데 사용됩니다. 1은 전송이 성공했고 0보다 적은 전송이 실패임을 의미합니다. 여기서 1이 성공했다는 것을 알고 있습니다.
실제 작업에서 확인 코드는 당사에 의해 생성되어야합니다. 검증 코드와 함께 결과 정보를 가져 오면 해시 맵 컬렉션을 쉽게 생각할 수 있습니다. 다음은 프로젝트 자체 요구 사항에 따라 인터페이스 변경 사항은 다음과 같습니다.
import java.util.hashmap; import org.apache.commons.httpclient.header; import org.apache.commons.httpclient.httpclient; import org.apache.commons.httpclient.namevaluepair; import org.apache.commons.method com.yuetile.utils.verifyingcodegenerator; public class sendmsg_webchinesecontroller {public static hashmap <string, Strows> getMessagestatus (String> hashmap <string, string> m = new Hashmap <String, String> (); HttpClient Client = new HttpClient (); postMethod ( "http://gbk.sms.webchinese.cn"); post.addrequestheader ( "content-type", "application/x-www-form-urlencoded; charset = gbk"); // 헤더 파일 문자열 code = verifyingcodegenerator.generate ()에서 트랜스 코딩 설정 설정; NameValuePair ( "key", "******"), 새로운 namevaluepair ( "smsmob", phone), new namevaluepair ( "smstext", "당신은이 사이트의 멤버를 등록하고 있습니다.이 확인 코드는 다음과 같습니다. code); post.setRequestBody (data); client.executemEthod (post); header [] headers = post.getResponseHeaders (); int statusCode = post.getStatusCode (); system.out.println ( "+statusCode :"+statusCode); for (header h : system.out.out.println (h.toT.)); 문자열 (post.getResponseBodyAsString (). getBytes ( "gbk")); System.out.println (결과); // 반환 메시지 상태 인쇄 m.put ( "result", result); post.releaseConnection (); return m;}}***는 타사 플랫폼에 등록 된 계정 암호를 의미합니다.
액션 레이어 :
/*** @Author hang* @Deccription Register, SMS 검증 코드를 보내고 세션에 저장* @Param 클라이언트 요청 게시물* @return reture status 매개 변수* @Throws Exception*/ @responsmapping (value = urldefine.register) u) 예외 {string message = "send senctly"; string phone = u.gettelephone (); // 클라이언트 사용자가 보낸 휴대폰 번호를 받는다. if (user! = null) {message = "휴대 전화 번호가 등록되었습니다"; 새 응답 (status.error, message);} else {hashmap <string, string> m = sendmsg_webchinesecontroller.getMessagestatus (전화); // 응용 프로그램 SMS 인터페이스 문자열 result = M.get ( "결과"); // (result.trim (). equals ( "1")) {// 1 인 경우 문자열 코드가 성공적으로 전송된다는 것을 의미합니다. // 보낸 검증 코드 내용 컨텐츠 logger.info ( "검증 코드 :"+code); // log httpsession session = request.getSession () 인쇄; // SESSIONSSION.SETATTRIBUTE ( "Code", Code); // 세션을 저장하기 위해 SMS 검증 코드를 세션에 넣습니다. SETMAXINACTIVEINTERVAL (60 * 5); // 일시적으로 설정 시간 절약 5 분 동안 새 응답을 반환합니다 (status.success, message);} else {message = "sms 송신 실패"; 새 응답을 반환합니다 (status.error, message);}}}이런 식으로 보내는 것은 성공할 것입니다.
시험:
우체부를 사용하여 로컬로 테스트 :
결과:
여기에서 성공적으로 보내십시오.
위는이 기사의 모든 내용입니다. 이 기사의 내용이 모든 사람의 연구 나 업무에 도움이되기를 바랍니다. 또한 wulin.com을 더 지원하기를 바랍니다!