1.因为jdk11没有 jdk.tools所以,引入百度智能云的sdk要编译报错。
<dependency>
<groupId>com.baidubce</groupId>
<artifactId>bce-java-sdk</artifactId>
<version>0.10.154</version>
</dependency>
这里不要想着去引这个包,因为没用。如果把这个包上传到自己的maven库里,或许还可以吧。
2.只能看sdk源码,找到签名方法和请求方法来,然后copy过来。
先去GitHub上下载源码
源码编译时会报错,缺一些包,其中会缺少apache的包,如下,需要单独引用。
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore-nio</artifactId>
<version>4.4.5</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpasyncclient</artifactId>
<version>4.1.2</version>
</dependency>
3.直接把下面这段通过sdk成功发送短信的代码copy到项目中。
public void a() {
String ACCESS_KEY_ID = "e************************";
String SECRET_ACCESS_KEY = "4*************************";
String ENDPOINT = "http://smsv3.bj.baidubce.com";
SmsClientConfiguration config = new SmsClientConfiguration();
config.setCredentials(new DefaultBceCredentials(ACCESS_KEY_ID, SECRET_ACCESS_KEY));
config.setEndpoint(ENDPOINT);
SmsClient smsClient = new SmsClient(config);
SendMessageV3Request request = new SendMessageV3Request();
request.setMobile("18********");
request.setSignatureId("sms-*************");
request.setTemplate("sms-***************");
Map<String, String> contentVar = new HashMap<>();
contentVar.put("number", "123456");
request.setContentVar(contentVar);
SendMessageV3Response response = smsClient.sendMessage(request);
// 解析请求响应 response.isSuccess()为true 表示成功
if (response != null && response.isSuccess()) {
// submit success
} else {
// fail
}
}
4.然后项目就肯定报错,因为你jdk11没法用sdk,这个时候就要去源码里找到对应的类,copy过来。总之有很多,附带一张意味深长的目录结构:
还没展示完,不过就这样吧。