В небольшом проекте, который я сделал некоторое время назад, в нем участвовали вход и регистрация в кодах проверки SMS. Я никогда не освещал это раньше. Я на самом деле не понимал этого после прочтения блогов других людей. Теперь я запишу функцию использования сторонней SMS-платформы для отправки кодов проверки.
Принимая регистрацию в качестве примера, эта статья завершает функцию кода проверки SMS на основе структуры SpringMVC+Spring+Mybatis.
Принцип отправки кода проверки SMS: случайным образом генерируйте 6-значный номер, сохранить 6-значный номер в сеанс, клиент судит соответствующий сеанс через SessionID и сравнивает код проверки, введенный пользователем с кодом проверки, записанным сеансом.
Чтобы предотвратить подозрение на какую -либо рекламу, я не буду говорить о том, какая SMS -платформа.
Как правило, сторонние SMS-платформы будут иметь свой собственный интерфейс SMS. Пока вы понимаете их интерфейс и внесите небольшие изменения, вы можете удовлетворить свои потребности.
Во-первых, перечислите код интерфейса платформы SMS: здесь нам нужно загрузить три JAR Packages 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 post = new postmethod ("http://gbk.sms.webchinese.cn"); // Сторонний адрес службы SMS Service post.addrequestheader ("content-type", "Application/xwww-form-urlencoded; charset = gbk"); // Установить транскодирование namevaluepair [] data = {new namevaluepair («uid», «Имя пользователя этого сайта»), New namevaluepair («Key», «Ключ безопасности интерфейса»), New namevaluePair («Smsmob», «Мобильный номер»), New Namevaluepair («Smstext», «Veriation Code:« Veriation Code: «Верификация»: «Вериционер»: «Верификация» 8888 ")}; post.setRequestbody (data); client.executemethod (post); Header [] headers = post.getResponseHeaders (); int statusCode = post.getStatuscode (); System.out.println (" statuscode: "+statuscode); for (headers h: headers) {System.out.print. result = new String (post.getResponseBodyAssTring (). GetBytes ("gbk")); System.out.println (результат); // Печать Статус возвращаемого сообщения post.releaseConnection ();}}It is not difficult to see that the information we want to send is in this line of code: NameValuePair[] data ={ new NameValuePair("Uid", "Site Username"), new NameValuePair("Key", "Interface Security Key"), new NameValuePair("smsMob", "Mobile phone number"), new NameValuePair("smsText","Verification code: 8888 ")};
В этом интерфейсе также есть результат, которое используется для сообщения пользователю статус отправки SMS. 1 означает, что отправка успешна, а другие менее 0 - это сбои. Здесь просто знайте, что 1 успешно.
В наших фактических операциях код проверки должен генерироваться нами. Получите информацию о результате вместе с кодом проверки, поэтому легко придумать использование коллекции HashMap. Вот изменения в интерфейсе на основе собственных требований проекта:
Import java.util.hashmap; import org.apache.commons.httpclient.header; import org.apache.commons.httpclient.httpclient; import org.apache.commons.httpclient.namevaluepair; импорт org.apache.commons.httpclient.methods.methods.methods.methods. com.yuetile.utils.VerifyingCodegenerator; открытый класс sendmsg_webchinesecontroller {public static hashmap <String, String> getMessAgeStatus (строка телефон) Throws Exception {hashmap <String, String> m = new Hashmap <String> (); httpclient client = new httpclient (string> (); httpclient client = new httpclient (););) Postmethod ("http://gbk.sms.webchinese.cn"); post.addrequestheader ("content-type", "Application/x-www-form-urlencoded; charset = gbk"); // Установить транскодирование в строке заголовка Code = verifingCodegenerator.generate (); // код проверки namevaluepair [] data = {new namevaluepair ("uid", "** Namevaluepair ("key", "******"), New namevaluepair ("smsmob", phone), New namevaluepair ("smstext", "вы регистрируетесь члена этого сайта, этот код проверки:"+code+"+" Valuetime - 5 минут ")}; code); post.setRequestbody (data); client.executemethod (post); Header [] headers = post.getResponseHeaders (); int statusCode = post.getStatuscode (); System.out.println ("StatusCode:"+StatusCode); для (Header h: headers) {System.out.out.println (h.toscode); String (post.getResponseBodyAssTring (). GetBytes ("GBK")); System.out.println (результат); // Печать Статус возвращаемого сообщения M.Put («Результат», Результат); post.ReleAseConnection (); return m;}}*** означает пароль учетной записи, зарегистрированный на сторонней платформе.
Слой действия:
/*** @author hang * @Deccription Register, send SMS verification code, save to Session* @param Encapsulate client request POST * @return Return status parameter* @throws Exception*/@ResponseBody@RequestMapping(value = UrlDefine.Register.CHECKMESSAGEWORK, method = RequestMethod.POST)public Object SendCheckMessage(HttpServletRequest request, @RequestBody UserBean u)throws Exception {String message = "Отправить успешно"; string phone = u.getTelephone (); // Получить номер мобильного телефона, отправленный клиентом userbean user = userservice.getbyphone (телефон); if (user! = null) {message = "Номер мобильного телефона был зарегистрирован"; вернуть новый ответ (status.error, message);} else {hashmap <string, string> m = sendmsg_webchinesecontroller.getmessagestatus (телефон); // приложение SMS -интерфейс String Result = M.Get ("result"); // Получить результат if (result.trim (). Equals ("1")) {// Если это 1, это означает, что строковый код успешно отправлен. // Получить отправленный код проверки кода logger.info ("Отправленный код проверки:"+code); // распечатать журнал httpsession session = request.getSession (); // set sessionsion.setattribute ("code", code); // Поместите код проверки SMS в сеанс для сохранения Session.SetMaxInativeInterVal (60 * 5); // Сэкономьте время временно установить на 5 минут. Возврат новый ответ (status.success, message);} else {message = "sms отправка не удалась"; вернуть новый ответ (status.error, message);}}}Таким образом, отправка будет успешной.
тест:
Проверьте локально, используя почтальон:
результат:
Отправить здесь успешно.
Выше всего содержание этой статьи. Я надеюсь, что содержание этой статьи поможет всем, кто учится или работа. Я также надеюсь поддержать Wulin.com больше!