1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Java实现第三方短信接口发送短信验证码

Java实现第三方短信接口发送短信验证码

时间:2021-02-17 00:19:25

相关推荐

Java实现第三方短信接口发送短信验证码

最近在做用户登陆注册模块的时候用到了采用第三方短信接口发送短信验证码,查询了一些网站和参考了一些别人的方法,用的是网建短信通的,也可以阿里云平台的或者别的平台的。

首先还是登陆注册用户信息,然后进入这个网站的首页之后我们先进入修改短信密钥拿到自己的安全密钥,然后进入上面的短信API接口页面

可以看到他们官方给出了一个演示demo

import java.io.UnsupportedEncodingException;import mons.httpclient.Header;import mons.httpclient.HttpClient;import mons.httpclient.NameValuePair;import mons.httpclient.methods.PostMethod;public class SendMsg_webchinese {public static void main(String[] args)throws Exception{HttpClient client = new HttpClient();PostMethod post = new PostMethod("http://gbk."); post.addRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=gbk");//在头文件中设置转码NameValuePair[] data ={new NameValuePair("Uid", "本站用户名"),new NameValuePair("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);for(Header h : 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", "接口安全秘钥"),new NameValuePair("smsMob","手机号码"),new NameValuePair("smsText","验证码:8888")};

可以看到这个Uid就是刚刚我们注册的用户名,key是刚刚获取到的密钥,smsMob就是要发送信息的手机号了,smsText就是要发送的信息。

所以把上面的演示demo稍微修改一下就可以直接使用了:

public static HashMap<String,String> getMessageStatus(String phone)throws Exception{HashMap<String,String> map=new HashMap<String,String>();String code=VerifyingCode();HttpClient client = new HttpClient();PostMethod post = new PostMethod("http://gbk.");//该第三方短信服务地址post.addRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=gbk");//在头文件中设置转码NameValuePair[] data = {new NameValuePair("Uid", "*****"),new NameValuePair("Key", "*********"),new NameValuePair("smsMob",phone),new NameValuePair("smsText","您的验证码是"+code+",有效时间为10分钟,请尽快验证。")};map.put("code",code);post.setRequestBody(data);client.executeMethod(post);Header[] headers = post.getResponseHeaders();int statusCode = post.getStatusCode();System.out.println("statusCode:"+statusCode);for(Header h : headers){System.out.println(h.toString());}String result = new String(post.getResponseBodyAsString().getBytes("gbk"));System.out.println(result); //打印返回消息状态,1表示发送成功,其他的小于0的为失败map.put("result", result);post.releaseConnection();return map;}//生成六位随机数public static String VerifyingCode(){Random random=new Random();String code="";for (int i=0;i<6;i++){code+=random.nextInt(10);}System.out.println(code);return code;}

我的想法就是定义一个hashmap将生成的验证码与发送的状态放在map里面,那么在service层上进行业务处理的时候就可以直接拿到我们刚刚发送的验证码进行业务处理。

最后还需要导入官方给的三个jar包,依赖如下

<dependency><groupId>commons-httpclient</groupId><artifactId>commons-httpclient</artifactId><version>3.1</version></dependency>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。