私がしばらく前に行った小さなプロジェクトでは、SMS検証コードのログインと登録が含まれていました。私はこれを前にカバーしたことがありませんでした。他の人のブログを読んだ後、私は実際にそれを理解していませんでした。次に、サードパーティSMSプラットフォームを使用して検証コードを送信する機能を書き留めます。
登録を例にとると、この記事では、SpringMVC+Spring+MyBatisフレームワークに基づいてSMS検証コード関数を完了します。
SMS検証コードを送信する原則は次のとおりです。6桁の数値をランダムに生成し、セッションに6桁の番号を保存し、クライアントはセッションIDを介して対応するセッションを判断し、ユーザーが入力した検証コードをセッションで記録した検証コードと比較します。
広告が疑われるのを防ぐために、SMSプラットフォームがどのSMSプラットフォームであるかについては話しません。
一般に、サードパーティのSMSプラットフォームには、独自のSMSインターフェイスがあります。あなたが彼らのインターフェースを理解し、わずかな変更を加える限り、あなたはあなたのニーズを満たすことができます。
まず、SMSプラットフォームインターフェイスコードをリストします。ここでは、3つのJARパッケージをダウンロードする必要があります。
java.io.unsupportedencodingception; 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)throws exception {httpclient client = new httpclient(); postmethod post = new postmethod( "http:///gk. //サードパーティ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"、 "モバイル番号")、new namevaluepair( "smstext"、 "、" "、" 8888 ")}; post.setRequestBody(data); client.executemethod(post); header [] headers = post.getResponseHeaders(); int statusCode = post.getStatusCode(); system.out.println(" statusCode: "+statusCode); headers){system.out.println(h.toString());} string result = new String(post.getResponseBodyAsstring()。getBytes( "gbk")); system.out.println(result); //リターンメッセージステータスpost.releaseconnection();}}を印刷送信したい情報がこのコードの行にあることを確認することは難しくありません:nameValuePair [] data = {new nameValuePair( "uid"、 "サイトユーザー名")、new namevaluepair( "key"、 "interface security key")、new namevaluepair( "smsmob"、 "baluepair" "" smstext "" "smstext" "" smstext "
また、このインターフェイスには結果メッセージがあり、ユーザーにSMSの送信ステータスを伝えるために使用されます。 1は、送信が成功し、他のものが0未満であることを意味します。ここでは、1が成功していることを知ってください。
実際の操作では、検証コードは当社によって生成されなければなりません。結果情報を検証コードと一緒に取得するため、HashMapコレクションの使用を簡単に考えることができます。プロジェクト自身の要件に基づいたインターフェイスの変更は次のとおりです。
java.util.hashmap; Import org.apache.commons.httpclient.header; Import org.apache.commons.httpclient; Import org.apache.commons.httpclient.namevaluepair; Import org.apache.commons.htpclient.methods.post.post.post.post.post.post.post.post.postmed.postmed.post.post.postmed.postmet com.yuetile.utils.veriviingCodeGenerator; public class sendmsg_webchinesecontroller {public static hashmap <string、string> getmessageStatus(string phone)tlows exception {hashmap、string> m = new hashmap <string>(); postmethod( "http://gbk.sms.webchinese.cn"); post.addrequestheader( "content-type"、 "application/x-www-form-urlencoded; charset = gbk"); //ヘッダーファイル文字列コードでトランスコードを設定します= verifyingcodegenerator.generate(); //検証コードnamevaluepair [] data = {new namevaluepair " nameValuePair( "key"、 "******")、new nameValuePair( "smsmob"、電話)、new nameValuePair( "smstext"、 "このサイトのメンバーを登録している場合、この検証コードは次のとおりです。 code); post.setRequestBody(data); client.executeMethod(post); header [] headers = post.getResponseHeaders(); int statusCode = post.getStatusCode(); system.out.println( "statusCode:"+statusCode); string(post.getResponseBodyAsstring()。getBytes( "gbk")); system.out.println(result); //返されたメッセージステータスM.put( "result"、result); post.releaseconnection(); return m;}}}***は、サードパーティのプラットフォームに登録されているアカウントパスワードを意味します。
アクションレイヤー:
/*** @author hang* @deccriptionレジスタ、SMS検証コードを送信し、セッションに保存* @param cluter client request post* @return return status parameter* @throws*/ @ressonsbody @requestmapping(urldefine.register.checkmessagework、= method = requestmethod.post)public objectmessage(htpservletreletreletbed relickess(httserbletreletreletreletebreletebretbed relickes) {string message = "send sucessに"; string phone = u.gettelephone(); //クライアントuserbean user = userservice.getByphone(電話)によって送信された携帯電話番号を取得します。 if(user!= null){message = "携帯電話番号が登録されています";新しい応答(status.error、message);} else {hashmap <string、string> m = sendmsg_webchinesecontroller.getMessageStatus(電話); //アプリケーションSMSインターフェイス文字列result = m.get( "result"); // resultを取得します(result.trim()。equals( "1")){// 1の場合、文字列コードが正常に送信されることを意味します。 //送信された検証コードコンテンツgger.info( "送信検証コード:"+code)を取得します。 // log httpsession session = request.getSession()を印刷します。 // sessionssion.setattribute( "code"、code)を設定します。 //セッションにSMS検証コードを配置してセッションを保存します。SetMaxinActiveInterval(60 * 5); //一時的に5分間設定された時間を保存します新しい応答を返します(status.success、message);} else {message = "sms sending failed";新しい応答を返す(status.error、message);}}}このようにして、送信は成功します。
テスト:
郵便配達員を使用してローカルでテストします:
結果:
ここで正常に送信してください。
上記はこの記事のすべての内容です。この記事の内容が、すべての人の勉強や仕事に役立つことを願っています。また、wulin.comをもっとサポートしたいと思っています!