Java通过SMS短信平台实现发短信功能
程序员文章站
2022-04-26 13:32:37
...
前言
本文记录的是使用中国网建的SMS短信平台,使用前需要注册,这里只记录SMS接口的使用。
1、登录http://sms.webchinese.cn/User/?action=key网站注册。
2、注册后直接登录。
3、登录成功后,首先找到短信秘钥,调接口需要。
找到秘钥后,要先把签名的内容填入,这样在调接口后会验证签名的。网站也有API接口调用案例(短信API接口菜单)。
4、POM引入
<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>
5、SendMsgUtil工具类。
本工具类使用的是GBK编码发送接口,每个注册的用户有5条免费的。
GBK编码发送接口地址:
http://gbk.sms.webchinese.cn/?Uid=本站用户名&Key=接口安全密码&smsMob=手机号码&smsText=短信内容
UTF-8编码发送接口地址:
http://utf8.sms.webchinese.cn/?Uid=本站用户名&Key=接口安全密码&smsMob=手机号码&smsText=短信内容
获取短信数量接口地址(UTF8):
http://sms.webchinese.cn/web_api/SMS/?Action=SMS_Num&Uid=本站用户名&Key=接口安全密
获取短信数量接口地址(GBK):
http://sms.webchinese.cn/web_api/SMS/GBK/?Action=SMS_Num&Uid=本站用户名&Key=接口安全密码
package com.example.mybaties.utils;
import lombok.extern.slf4j.Slf4j;
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 java.io.IOException;
import java.util.HashMap;
/**
* @author LST
* @version 1.0
* @Description: 短信发送类
* @date 2020-1-16 14:45
*/
@Slf4j
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= String.valueOf(num);
NameValuePair[] data ={new NameValuePair("Uid", "用户名"),//sms平台的用户名
new NameValuePair("Key", "短信秘钥"),//短信秘钥,不是密码
new NameValuePair("smsMob",phone),//目的手机号码,多个手机号用半角逗号隔开
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();
log.info("statusCode:{}",statusCode);
Header[] headers = post.getResponseHeaders();
for(Header h : headers) {
log.info(h.toString());
}
String result = null;
try {
result = new String(post.getResponseBodyAsString().getBytes("gbk"));
} catch (IOException e) {
e.printStackTrace();
}
log.info(result); //打印返回的消息状态
map.put("result", result);
post.releaseConnection();
return map;
}
public static void main(String[] args) {
getMessageStatus("手机号码");
}
}
下图是发送到我手机上的短信内容
6、返回code
短信发送后返回值 | 说 明 |
---|---|
-1 | 没有该用户账户 |
-2 | **不正确(不是用户密码) |
-3 | 短信数量不足 |
-11 | 该用户被禁用 |
-14 | 短信内容出现非法字符 |
-4 | 手机号格式不正确 |
-41 | 手机号码为空 |
-42 | 短信内容为空 |
大于0 | 短信发送数量 |
下一篇: 【编译原理】第一章引论
推荐阅读