原文地址:https://www.jianshu.com/p/fb1f90662a93

【1】前言

目前大多网站APP的登陆方式都不再单一,通过手机获取短信验证码进行账户登陆无疑是最方便、快捷和安全的一种方式。第三方短信发送平台有很多种,各个平台有各自的优缺点,在选择的时候可以根据自己的具体实际情况定夺。

【2】平台开通
2.1:用户注册

百度SMS短信通,进入官方页面,注册账号;
官网:http://sms.webchinese.cn/

2.2:登陆获取必要信息

登陆之后,首页会展示当前用户部分信息,这里只关注短信条数,新注册用户会有5条免费的测试短信,这里我们要记住的重要信息主要有5条,切记要保存好

1:账号名
2:密码
3:短信秘钥(验签秘钥,长度为20的加密字符串)
4:绑定手机:153xxxxxxxx
5:绑定邮箱:xxxxxxxxx@qq.com

【3】代码实现
1、加入依赖

<dependencies><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.1.1</version></dependency><dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId><version>1.4</version></dependency><dependency><groupId>commons-httpclient</groupId><artifactId>commons-httpclient</artifactId><version>3.0.1</version></dependency></dependencies>

2、SendMessageUtil 工具类

/*** Created by lvfang on 2017/3/18.** 短信发送工具类  SMS发送*/
public class SendMessageUtil {private static final String SMS_Url = "http://sms.webchinese.cn/web_api/";/*** @param Uid SMS用户id  : lvfang123* @param Key 接口秘钥:SMS登录可查(非登录密码)* @param sendPhoneNum 短信发送目标号码* @param desc 短信内容* @return Integer(1:成功码,其他失败,具体参见注释)*/public static Integer send(String Uid,String Key,String sendPhoneNum,String desc){HttpClient client = new HttpClient();PostMethod post = new PostMethod(SMS_Url);post.addRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=gbk");// 在头文件中设置转码//设置参数NameValuePair[] data = {new NameValuePair("Uid", Uid),new NameValuePair("Key", Key),//秘钥new NameValuePair("smsMob", sendPhoneNum),new NameValuePair("smsText", desc)};post.setRequestBody(data);try {client.executeMethod(post);} catch (Exception e) {  e.printStackTrace();  }Header[] headers = post.getResponseHeaders();int statusCode = post.getStatusCode();System.out.println("statusCode:" + statusCode);for (Header h : headers) {System.out.println(h.toString());}String result ="";try {result = new String(post.getResponseBodyAsString().getBytes("gbk"));} catch (Exception e) {  e.printStackTrace();  }post.releaseConnection();return Integer.parseInt(result);}/***  -1  没有该用户账户-2 接口密钥不正确 [查看密钥]不是账户登陆密码-21    MD5接口密钥加密不正确-3 短信数量不足-11    该用户被禁用-14    短信内容出现非法字符-4 手机号格式不正确-41    手机号码为空-42    短信内容为空-51    短信签名格式不正确接口签名格式为:【签名内容】-6 IP限制大于0    短信发送数量以上作为补充*/public static String getMessage(Integer code){String message;if(code > 0 ) {message = "SMS-f发送成功!短信量还有" + code + "条";}else if(code == -1){message = "SMS-没有该用户账户";}else if(code == -2){message = "SMS-接口密钥不正确";}else if(code == -21){message = "SMS-MD5接口密钥加密不正确";}else if(code == -3){message = "SMS-短信数量不足";}else if(code == -11){message = "SMS-该用户被禁用";}else if(code == -14){message = "SMS-短信内容出现非法字符";}else if(code == -4){message = "SMS-手机号格式不正确";}else if(code == -41){message = "SMS-手机号码为空";}else if(code == -42){message = "SMS-短信内容为空";}else if(code == -51){message = "SMS-短信签名格式不正确接口签名格式为:【签名内容】";}else if(code == -6){message = "SMS-IP限制";}else{message = "其他错误";}return message;}/*** 随机生成6位验证码* @return*/public static String getRandomCode(Integer code){Random random = new Random();StringBuffer result= new StringBuffer();for (int i=0;i<code;i++){result.append(random.nextInt(10));}return result.toString();}
}

3、全局测试

/*** 随机生成6位验证码* @return*/public static String getRandomCode(){Random random = new Random();String result="";for (int i=0;i<6;i++){result+=random.nextInt(10);}return result;}/*** @author:lvfang* @mathName: testSendMessage* @parameter: 无* @return value:* @throws null* @date 2018/8/11* @desc SMS短信测试*/@Testpublic void testSendMessage(){
//        SendMessageUtil.send("SMS账户","接口秘钥","目标号码","发送内容");SendMessageUtil.send("lvfaxxxxxx","0b334927e1xxxxxxxxxx","153xxxxxxxxx","验证码:"+getRandomCode(6));System.out.println(SendMessageUtil.getMessage(resultCode));}

这里测试要注意的是,如果当前用户是测试用户(未交费绑定短信模板的用户),测试内容是受限的,并且短信未开通及时发送,程序所发送的短信是不能立刻收到的。具体详情请参照SMS官网注意事项。
新用户用接口测试验证码时,请勿输入:测试等无关内容信息,请直接输入:验证码:xxxxxx,发送。

4、发送响应
除了200响应码,其他都是有问题的, 这里贴个API调用接口文档:http://sms.webchinese.cn/api.shtml

statusCode:200
Cache-Control: no-cache
Content-Length: 2
Content-Type: text/html
Expires: Fri, 10 Aug 2018 05:39:58 GMT
Server: Microsoft-IIS/7.5
Set-Cookie: CHNET=Temp%5Fusername=201881113395989272; expires=Fri, 07-May-2021 05:39:58 GMT; path=/
Set-Cookie: ASPSESSIONIDAQBQTCCC=HDIPMIKCBOOOKHLDDPDKIAPI; path=/
X-Powered-By: ASP.NET
Date: Sat, 11 Aug 2018 05:40:00 GMT##响应码文档
/***  -1  没有该用户账户-2  接口密钥不正确 [查看密钥]不是账户登陆密码-21 MD5接口密钥加密不正确-3  短信数量不足-11 该用户被禁用-14 短信内容出现非法字符-4  手机号格式不正确-41 手机号码为空-42 短信内容为空-51 短信签名格式不正确接口签名格式为:【签名内容】-6  IP限制大于0 短信发送数量以上作为补充*/

5、收到短信
不出意外、这时候我们就会收到自己发送的短信、


6、回看短信日志

Springboot集成SMS发送短信相关推荐

  1. springboot集成阿里云短信服务,实现发送短信功能

    springboot集成阿里云短信服务,实现发送短信功能 准备工作: 1.登陆阿里云->进入控制台->开通短信服务(进入后根据提示开通) 2.充值(借人家平台发短信你以为不要钱的?我充了3 ...

  2. SpringBoot集成阿里云短信服务

    SpringBoot集成阿里云短信服务 1.准备工作 2.项目集成 2.1 添加依赖 2.2 配置文件 2.3 业务逻辑实现 在实际项目中经常有发送短信的功能,今天进说一下对接阿里云短信服务实现短信发 ...

  3. SpringBoot 实现手机发送短信验证码

    手机发送短信 内容 一.手机发送短信 1. 前端界面代码 2. UserInfoController 控制器 3. application.properties 配置类文件 4. 具体实现 总结 内容 ...

  4. 百度SMS发送短信C#

    /// <summary>/// 百度接口签名帮助类/// </summary>public class BaiduApiHelper{#region 构造函数/// < ...

  5. springboot集成阿里云短信验证码

    1.添加pom.xml依赖 <dependency><groupId>com.aliyun</groupId><artifactId>aliyun-ja ...

  6. SpringBoot集成阿里云短信服务实现登录注册(超详细)

    本篇博客采用得技术为:springboot + redis + aliyun短信验证 redis我用来做短信校验,首先我们先刨除redis部分做一个发送功能 登录你得阿里云账号 1 -> 控制台 ...

  7. sms发送短信验证码

    /*** 发送短信验证码** @param mobile* @return*/ public String sendSms(String mobile) {//连接阿里云DefaultProfile ...

  8. Java SpringBoot集成阿里云短信与邮件服务

    1.pom.xml导入jar包 <!--阿里云短信 --><dependency><groupId>com.aliyun</groupId><ar ...

  9. springboot+阿里大鱼发送短信详细

    1导入阿里大鱼坐标 <dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-s ...

  10. java使用中国网建sms发送短信

    一.说明 不管哪个短信平台发送短信都很类似.举一反三. 二.先去中国网建注册账号. 地址:https://www.smschinese.com.cn/ 注册完成后直接登录. 找到接口功能设置可以获取账 ...

最新文章

  1. linux shell 查找某字符串 在文件的行数
  2. Tensorflow实践 基本原理学习和框架使用
  3. Cloud Programming Simplifie : A Berkeley View on Serverless Computing
  4. ValueError: Must have equal len keys and value when setting with an iterable
  5. Exchange Server 2013预览版服务器角色概况
  6. 如何看懂dtd文档?
  7. IDEA主题设置与eclipse代码风格一致
  8. 从燃尽图看项目管理:你的项目哪里出错了?(燃尽图类型全解析)
  9. matlab 中sumg,MATLAB)课后实验答案[1]
  10. 数独游戏技巧从入门到精通_工程施工图识图方法和技巧,使你从建筑施工入门到精通!...
  11. 进入32位保护模式之路
  12. python中数据结构的基本定义
  13. Edison 蓝牙模块 学习笔记
  14. 两角和与差的余弦公式的五种推导方法之对比
  15. Solr实现京东搜索
  16. Pymol中如何显示stick+cartoon+surface
  17. Vue全家桶学习笔记:Vue Router篇
  18. 开发通用资料——英文缩写
  19. 企业APP营销策略方案
  20. python相对路径找不到文件_Python 解决相对路径问题:No such file or directory

热门文章

  1. Linux编译移植Qt5的环境_OMAPL138平台
  2. signature=6bac8596b91cba298303e9d5c86a608f,2019年武汉市中考英语试题
  3. 微信小程序 内容评论-回复评论-回复回复的实现
  4. VS间接寻址级别不同
  5. 金士顿U盘被写保护的解决方法(量产)
  6. python清明节作业
  7. 操作性定义(Operational Definition)
  8. 二维码扫码功能流程图
  9. 数据分析处理之词频统计
  10. HDU 3533 Escape (预处理+BFS)