一、使用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 com.serviceMarket.common.util;
import java.io.IOException;
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;
/**
* 类说明 :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.webchinese.cn"); //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:
@Controller
public class Controller {
//短信发送接口
@RequestMapping(value="/GET/authentication/{phone}")
@ResponseBody
//返回结果Result对象:成功时返回一个6位数验证码,失败时返回false
public 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(); //设置session
session.setAttribute("code", code);//将短信验证码放到session中保存
session.setMaxInactiveInterval(60 * 5);//保存时间 暂时设定为5分钟
System.out.println(code);
return Result.ok(code);
} else {
//短信发送失败
return Result.ok("false");
}
}
}
(4)短信发送后的返回值:
短信发送后返回值 | 说 明 |
---|---|
-1 | 没有该用户账户 |
-2 | 接口密钥不正确,不是账户登陆密码 |
-21 | MD5接口密钥加密不正确 |
-3 | 短信数量不足 |
-11 | 该用户被禁用 |
-14 | 短信内容出现非法字符 |
-4 | 手机号格式不正确 |
-41 | 手机号码为空 |
-42 | 短信内容为空 |
-51 | 短信签名格式不正确 接口签名格式为:【签名内容】 |
-6 | IP限制 |
大于0 | 短信发送数量 |
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/114751.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...