问题1:升级后的App Key和App Secret获取入口找不到

问题2:为什么登入大于账户却进了云通信平台
原因:阿里大于全新升级为“阿里云 · 云通信”,成为阿里云旗下品牌。附上官网通告

问题3:阿里大于和网易云信有什么区别?
首先是API和SDK不一样, 其次是配置上有改动。新用户无法申请阿里大于的服务,只能使用阿里云通信。
旧版API发送短信,必须拥有 签名,APPKEY,APPSECRET 。官方给的demo例子
String url = "http://gw.api.taobao.com/router/rest";
TaobaoClient client = new DefaultTaobaoClient(url, appkey, secret);
AlibabaAliqinFcSmsNumSendRequest req = new AlibabaAliqinFcSmsNumSendRequest();
req.setExtend("123456");
//必须填写normal
req.setSmsType("normal");
//你应用的名字
req.setSmsFreeSignName("阿里大于");
//模板中的参数,按照实际情况去
req.setSmsParamString("{\"code\":\"1234\",\"product\":\"alidayu\"}");
//电话号码
req.setRecNum("13000000000");
//模板
req.setSmsTemplateCode("SMS_585014");
AlibabaAliqinFcSmsNumSendResponse rsp = client.execute(req);
System.out.println(rsp.getBody());
新版API发送短信,必须拥有 签名,AccessKey ID,Access Key Secret 。官方给的demo例子
DefaultProfile profile = DefaultProfile.getProfile("default", "<accessKeyId>", "<accessSecret>");
IAcsClient client = new DefaultAcsClient(profile);
CommonRequest request = new CommonRequest();
//request.setProtocol(ProtocolType.HTTPS);
request.setMethod(MethodType.POST);
request.setDomain("dysmsapi.aliyuncs.com");
request.setVersion("2017-05-25");
request.setAction("SendSms");
request.putQueryParameter("PhoneNumbers", "13800138000");
request.putQueryParameter("SignName", "签名");
request.putQueryParameter("TemplateCode", "SMS123456");
try {
CommonResponse response = client.getCommonResponse(request);
System.out.println(response.getData());
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
e.printStackTrace();
}
目前阿里大于已经不允许申请测试的签名,AccessKey ID,Access Key Secret以及短信模板可以正常申请,但需注意格式和命名,不符合规则的命名会导致审核时间过长甚至不通过。


在了解上述问题后,接下来正式开发
1、创建Maven项目,下载SDK

阿里大于的SDK在maven库中,无法找到。需要开发中自己在本地打包加入。我的做法是直接把打包好maven包解压,然后放到本地的maven库。这是我自己打包好的maven包。有需要的可以去我的资源下载:https://download.youkuaiyun.com/download/henry_lin_wind/11011951

在 pom.xml文件中添加dependency,因为本地已存在该maven包,软件会自动导入。
<dependency>
<groupId>alidayu</groupId>
<artifactId>alidayu</artifactId>
<version>1.0</version>
</dependency>
导入成功后,可以在开发软件的maven中查看。

2、短信发送代码可以先参考官方demo,下面是根据我的开发需求改进的
import com.taobao.api.ApiException;
import com.taobao.api.DefaultTaobaoClient;
import com.taobao.api.TaobaoClient;
import com.taobao.api.request.AlibabaAliqinFcSmsNumSendRequest;
import com.taobao.api.response.AlibabaAliqinFcSmsNumSendResponse;
public class DaYuDemo {
public static String requestSmsCode(String mobiles,String template,String params) {
//阿里大鱼URL
String url = "http://gw.api.taobao.com/router/rest";
//以下才是重点 三个参数,一个url阿里大鱼的服务地址,其他两个去阿里大鱼后端查看自己的相应的参数
TaobaoClient client = new DefaultTaobaoClient(url, "", "");
AlibabaAliqinFcSmsNumSendRequest req = new AlibabaAliqinFcSmsNumSendRequest();
req.setExtend("1");
//必须填写normal
req.setSmsType("normal");
//你应用的名字
req.setSmsFreeSignName("");
//电话号码
req.setRecNum(mobiles);
//模板
req.setSmsTemplateCode(template);//
//模板中的参数,按照实际情况去
req.setSmsParamString("{"+params+"}");
try {
AlibabaAliqinFcSmsNumSendResponse rsp = client.execute(req);
if(rsp.getErrorCode() == null){
System.out.println("发送成功");
System.out.println(rsp.getBody().toString());
System.out.println(rsp.getResult().getMsg());
return "发送成功";
}else {
System.out.println("发送失败");
System.out.println("code:" + rsp.getErrorCode());
System.out.println("msg:" + rsp.getSubMsg());
System.out.println("sub_code:" + rsp.getErrorCode());
System.out.println("sub_msg:" + rsp.getSubMsg());
System.out.println(rsp.getBody().toString());
System.out.println();
return "发送失败";
}
} catch (ApiException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return "接口调用失败";
}
}
public static void main(String[] args){
String result = requestSmsCode("13800138000","SMS_1234567898","code:"123456"");
System.out.println("阿里大于短信发送结果:"+result);
}
}
接口调用成功后,通过一个AlibabaAliqinFcSmsNumSendResponse实体类接收结果
a.发送失败的接口返回
b. 发送成功的接口返回

生成短信日志时用到字符串的提取和替换,可以参考我的博客 https://blog.youkuaiyun.com/Henry_Lin_Wind/article/details/88639535
833

被折叠的 条评论
为什么被折叠?



