前言
本文记录的是使用中国网建的SMS短信平台,使用前需要注册,这里只记录SMS接口的使用。
1、登录/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./?Uid=本站用户名&Key=接口安全密码&smsMob=手机号码&smsText=短信内容
UTF-8编码发送接口地址:
http://utf8./?Uid=本站用户名&Key=接口安全密码&smsMob=手机号码&smsText=短信内容
获取短信数量接口地址(UTF8):
/web_api/SMS/?Action=SMS_Num&Uid=本站用户名&Key=接口安全密
获取短信数量接口地址(GBK):
/web_api/SMS/GBK/?Action=SMS_Num&Uid=本站用户名&Key=接口安全密码
package com.example.mybaties.utils;import lombok.extern.slf4j.Slf4j;import mons.httpclient.Header;import mons.httpclient.HttpClient;import mons.httpclient.NameValuePair;import mons.httpclient.methods.PostMethod;import java.io.IOException;import java.util.HashMap;/*** @author LST* @version 1.0* @Description: 短信发送类* @date -1-16 14:45*/@Slf4jpublic 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= 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("手机号码");}}
下图是发送到我手机上的短信内容