一:阿里大于的短信接口:
1.1由于阿里大于全面升级成阿里云 云通信,这样给一些新手的朋友带来了一些使用上的一点不方便.下面是阿里云的网址:
https://dayu.aliyun.com/
1.2新用户的注册:
新用户注册就送两百条短信的,作为测试练习使用还是够的.有点小激动吧,快去注册一个吧.
1.3:升级后,关于业务的操作都要到控制台去完成的,新的用户需要使用支付宝或淘宝的账号进行实名认证的.这个按照提示的操作的就可以顺利完成的.
之后就可以使用相应的服务了:这里以个人的用户介绍:
1.4 那个短信签名和短信的模板都需要申请的,根据自己测试的需要来按照格式申请就没啥问题的.
下面就是下载SDK:如下图所示:这里以Java语言为例.
1.5:下载后拿到工具包后,就可以开始开发Demo了.创建一个普通的Java工程就可以了.把那个jar包导进来如下图说是:
一个使用的流程简单总结:
1.6:创建一个类进行测试:
package com.ix.message;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
public class SmsDemo{
public static void main(String[] args) throws ClientException {
sendCode();
}
//封装发送短信的方法
public static void sendCode() throws ClientException{
//设置超时时间-可自行调整
System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
System.setProperty("sun.net.client.defaultReadTimeout", "10000");
//初始化ascClient需要的几个参数
final String product = "Dysmsapi";//短信API产品名称(短信产品名固定,无需修改)
final String domain = "dysmsapi.aliyuncs.com";//短信API产品域名(接口地址固定,无需修改)
//替换成你的AK
final String accessKeyId = "";//你的accessKeyId,参考本文档步骤2
final String accessKeySecret = "";//你的accessKeySecret,参考本文档步骤2
//初始化ascClient,暂时不支持多region
IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId,
accessKeySecret);
DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
IAcsClient acsClient = new DefaultAcsClient(profile);
//组装请求对象
SendSmsRequest request = new SendSmsRequest();
//使用post提交
request.setMethod(MethodType.POST);
//必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式
request.setPhoneNumbers("");//你要发送给的用户手机号码
//必填:短信签名-可在短信控制台中找到
request.setSignName("你的短信签名");
//必填:短信模板-可在短信控制台中找到
request.setTemplateCode("你的短信模板的ID");//在模板里面就可以找到的.
//可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
//获取验证码
String code=getCode();
//友情提示:如果JSON中需要带换行符,请参照标准的JSON协议对换行符的要求,比如短信内容中包含
的情况在JSON中需要表示成\r\n,否则会导致JSON在服务端解析失败
request.setTemplateParam("{"code":""+code+""}");
//可选-上行短信扩展码(无特殊需求用户请忽略此字段)
//request.setSmsUpExtendCode("90997");
//可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
//request.setOutId("yourOutId");
//请求失败这里会抛ClientException异常
SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
if(sendSmsResponse.getCode() != null && sendSmsResponse.getCode().equals("OK")) {
System.out.println("请求成功!");
}
}
//封装生成6位随机数的方法
public static String getCode(){
String code="";
for(int i=0;i<6;i++){
code+=(int)Math.floor(Math.random()*10);
}
return code;
}
}
直接运行就可以发送过去了.快去试试吧.
测试代码就是这样的:那个6位随机数的是需要自己编码生成.
这个是Java版的,如果要做成JavaWeb版的,用户注册的时候就可以使用的Ajax,绑定一个文本框,用户输入手机验证密码然后传值给后台, 将传入的值和存在session中的code进行比较就可以了.思路就是这样的.
短信发送完毕后可以查看发送的结果:
再次查看发送短信后收费的情况: