200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > java通过SMS短信平台实现发短信的功能

java通过SMS短信平台实现发短信的功能

时间:2022-07-22 04:02:29

相关推荐

java通过SMS短信平台实现发短信的功能

一、使用java发送短信的方法:

java发送手机短信,通常有几种方法:

(1)使用webserive接口发送手机短信;

(2)使用短信猫的方式进行短信的发送,比较常用的方式,不过需要购买硬件设备;

(3)使用中国网建的SMS短信平台,使用前需要注册,这里只记录SMS接口的使用。

二、接口的使用:

(1)导入jar:

commons-logging-1.2.jar

commons-codec-1.10.jar

commons-httpclient-3.1.jar

maven依赖:

<dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId><version>1.10</version></dependency><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.2</version></dependency><dependency><groupId>commons-httpclient</groupId><artifactId>commons-httpclient</artifactId><version>3.1</version></dependency>

(2)util:

package mon.util;import java.io.IOException;import java.util.HashMap;import mons.httpclient.Header;import mons.httpclient.HttpClient;import mons.httpclient.NameValuePair;import mons.httpclient.methods.PostMethod;/** * 类说明 :SMS_webchinese发送短信util*/public class SendMsgUtil {public static HashMap<String,String> getMessageStatus(String phone){HashMap<String,String> map=new HashMap<String,String>();HttpClient client = new HttpClient();PostMethod post = new PostMethod("http://gbk."); //sms平台接口post.addRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=gbk");//在头文件中设置编码集格式int num=(int)((Math.random()*9+1)*100000);//6位数验证码String code=num+"";NameValuePair[] data ={ new NameValuePair("Uid", "用户名"),//sms平台的用户名new NameValuePair("Key", "短信秘钥"),//短信秘钥,不是密码new NameValuePair("smsMob","目的手机号码"),//目的手机号码,多个手机号用半角逗号隔开new NameValuePair("smsText","本次验证码为:"+code+""+",有效时间为5分钟")//短信内容,自定义};map.put("code", code);post.setRequestBody(data);try {client.executeMethod(post);} catch (IOException e) {e.printStackTrace();}//打印状态码和响应头信息int statusCode = post.getStatusCode();System.out.println("statusCode:"+statusCode);Header[] headers = post.getResponseHeaders();for(Header h : headers){System.out.println(h.toString());}String result = null;try {result = new String(post.getResponseBodyAsString().getBytes("gbk"));} catch (IOException e) {e.printStackTrace();} System.out.println(result); //打印返回的消息状态map.put("result", result);post.releaseConnection();return map;}}

(3)Controller:

@Controllerpublic class Controller {//短信发送接口@RequestMapping(value="/GET/authentication/{phone}")@ResponseBody//返回结果Result对象:成功时返回一个6位数验证码,失败时返回falsepublic Result authentication(@PathVariable(value="phone")String phone,HttpServletRequest request){HashMap<String, String> map = SendMsgUtil.getMessageStatus(phone); //调用发送短信接口String result = map.get("result");//获取到result值if (result.trim().equals("1")) {//如果为1,表示成功发送String code = map.get("code");//获取发送的验证码内容HttpSession session = request.getSession(); //设置sessionsession.setAttribute("code", code);//将短信验证码放到session中保存session.setMaxInactiveInterval(60 * 5);//保存时间 暂时设定为5分钟System.out.println(code);return Result.ok(code);} else {//短信发送失败return Result.ok("false");}}}

(4)短信发送后的返回值:

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