Em um pequeno projeto que fiz há algum tempo, envolveu o login e o registro com códigos de verificação de SMS. Eu nunca tinha coberto isso antes. Na verdade, eu não entendi depois de ler os blogs de outras pessoas. Agora vou escrever a função de usar a plataforma SMS de terceiros para enviar códigos de verificação.
Tomando o registro como exemplo, este artigo conclui a função de código de verificação do SMS com base na estrutura Springmvc+Spring+Mybatis.
O princípio do envio do código de verificação do SMS é: gerar aleatoriamente um número de 6 dígitos, salvar o número de 6 dígitos na sessão, o cliente julga a sessão correspondente através da SessionID e compara o código de verificação inserido pelo usuário com o código de verificação registrado pela sessão.
Para impedir que qualquer anúncio seja suspeito, não falarei sobre qual é a plataforma SMS.
Geralmente, as plataformas SMS de terceiros têm sua própria interface SMS. Desde que você entenda a interface deles e faça uma pequena mudança, você pode atender às suas necessidades.
Primeiro, liste o código da interface da plataforma SMS: Aqui precisamos baixar três pacotes JAR comon common-logging-1.1.1.jar, commons-httpclient-3.1.jar, commons-codec-1.4.jar
importar java.io.unsupportEnCodingException; importar org.apache.commons.httpclient.header; importar org.apache.commons.httpclient.httpclient; importar org.apache.commons.httpclient.namevaluepair; org.apache.commons.httpclient.methods.postmethod; classe pública sendmsg_webchinese {public static void main (string [] args) lança exceção {httpclient = new httpclient (); postmethod post = newSmethod ("htttp. // o endereço de serviço SMS de terceiros post.addrequestHeader ("content-type", "Application/x-www-forma-urlencoded; charset = gbk"); // defina transcoding nameValuepair [] data = {new nameValuepair ("uid", "nome de usuário deste site"), new nameValuepair ("key", "interface Security Key"), new NameValuePair ("SmsMob", "Número de celular"), new NameValuePair ("SmStext", "Code" Code: 8888 ")}; post.setRequestbody (dados); client.executemethod (post); cabeçalho [] cabeçalhos = post.getResponseHeaders (); int statusCode = post.getStuscode (); system.out.println (" statusCode: "+status); fous (headrs h: heperers) {systems {system. system. system. (systemn) {system. system.stln (system.ptln. resultado = new string (post.getResponseBodyasstring (). getBytes ("gbk")); System.out.println (resultado); // Print Return Message Status 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")};
Há também uma mensagem de resultado nesta interface, que é usada para informar ao usuário o status do envio de SMS. 1 significa que o envio é bem -sucedido e outros menos de 0 são falhas. Aqui, apenas saiba que 1 é bem -sucedido.
Em nossas operações reais, o código de verificação deve ser gerado por nós. Obtenha as informações de resultado com o código de verificação, por isso é fácil pensar em usar uma coleção de hashmap. Aqui estão as alterações na interface com base nos próprios requisitos do projeto:
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.httpclient.methods.PostMethod;import com.yuetile.utils.VinificandoCodeGenerator; public class Sendmsg_webchineSecontroller {public static hashmap <string, string> getMessAgestatus (string telefon) lança exceção {hashmap <string, string> m = new hashmap <string, string> (); Postmethod ("http://gbk.sms.webchinese.cn"); post.addrequestHeader ("content-type", "Application/x-www-corm-urlencoded; charset = gbk"); // Defina transcodificação no código do cabeçalho String code = verificandoCodeGenerator.GenerArate (); URIFICE "UNIFID", "UNIFIDEPAIR ()," UNIGH), "UNIGH)," UNIGH), "UNIGH)," UNIGH), "UNIGH)," UNIDEPAIRTIDAIRATIMETER (); "********"), new NameValuepair ("SMSMOB", telefone), new NameValuepair ("SmStext", "Você está registrando um membro deste site, esse código de verificação é:"+code+"" "+" valueTime é 5 minutos ")}; Post.GetResponseHeaders (); int statusCode = post.getStatuscode (); System.out.println ("StatusCode:"+StatusCode); para (cabeçalho H: cabeçalhos) {System.out.Println (H.tostring ());} string = string = new String (Post.KTROSPOBLEY " System.out.println (resultado); // Print Return Message Status M.put ("Result", resultado); post.releaseConnection (); retorna m;}}*** significa a senha da conta registrada em uma plataforma de terceiros.
Camada de ação:
/*** @Author Hang* @Deccription Register, envie o código de verificação do SMS, salve para sessão* @param encapsular a solicitação do cliente Post* @return Parâmetro de status de retorno* @throws Exceção*/ @Response @requestMapp (value = urldefine.register.checkmessagework, método = requestmethOd.Post) o objeto público sendcheckMessage (htodMessageWork, MethodMetMELETMETMET.Post) {String message = "Enviar com êxito"; String Phone = U.GetTelephone (); // Receba o número do telefone celular enviado pelo usuário do usuário UserBean = UserService.getByphone (telefone); if (usuário! = null) {message = "o número do telefone celular foi registrado"; retornar nova resposta (status.error, mensagem);} else {hashmap <string, string> m = sendmsg_webchinesecontroller.getMessAgestatus (telefone); // Aplicativo SMS Interface String resultado = m.get ("resultado"); // Obtenha resultado se (resultado.Trim (). Equals ("1")) {// Se for 1, significa que o código da string é enviado com sucesso. // Obtenha o código de verificação enviado Logger.info ("Código de verificação enviado:"+código); // imprima a sessão de log httpSession = request.getSession (); // Definir Sessionssion.SetAttribute ("Code", Code); // coloque o código de verificação do SMS na sessão para salvar session.setMaxinActiveInterval (60 * 5); // economize tempo definido temporariamente como 5 minutos retorna uma nova resposta (status.success, mensagem);} else {message = "sms enviando falhas"; Retorne nova resposta (status.error, mensagem);}}}Dessa forma, o envio será bem -sucedido.
teste:
Teste localmente usando o Postman:
resultado:
Envie com sucesso aqui.
O exposto acima é todo o conteúdo deste artigo. Espero que o conteúdo deste artigo seja de ajuda para estudar ou trabalhar de todos. Eu também espero apoiar mais wulin.com!