这是导入的整个项目,除了发送类“QcloudSmsTest”以及配置文件pom.xml还需要修改哪些类?我老是发送失败,显示“{"result":1001,"errmsg":"sig error, sig incorrect","ext":""}”查过错误码意思是sig校验失败,想请问在Java项目中应该修改哪些地方才能使sig校验成功(注:腾讯云上的说明实在是看不懂,直接复制腾讯云说明的就请不用回答了,希望有用过的大神不吝赐教。)
/**
* 腾讯云 短信接口
*/
@Component
//@PropertySource("classpath:config/DataInfo.properties")
public class SMS {
private final Integer appid = 腾讯的id;
private final String appkey = "腾讯给你的appkey";
// @Value("${sms.qcloud.appid}")
// private String appid;
//
// @Value("${sms.qcloud.appkey}")
// private String appkey;
public SMS() {
}
// 指定模板群发
public void groupSend(ArrayList<String> phoneNumbers, int ModelID, ArrayList<String> params, String sign) throws Exception {
SmsMultiSenderResult multiSenderResult = null;
// 初始化群发
ArrayList<String> smsGroup = null;
Integer b = 0;
SmsMultiSender multiSender = new SmsMultiSender(appid, appkey);
for (int i = 0; i < phoneNumbers.size(); i++) {
if (b == 0 || b == 200) { //官方上限每次200条,所以拆分。
if (b == 200)
multiSenderResult = multiSender.sendWithParam("86", smsGroup, ModelID, params, sign, "1400034822", "");
smsGroup = new ArrayList<>();
b = 0;
}
b++;
smsGroup.add(phoneNumbers.get(i));
}
if (multiSenderResult.result != 0) {
//
}
}
// 指定模板单发
public Boolean signSend(String phoneNumber, int ModelID, ArrayList<String> params, String sign) throws Exception {
// 初始化单发
SmsSingleSender singleSender = new SmsSingleSender(appid, appkey);
SmsSingleSenderResult singleSenderResult = singleSender.sendWithParam("86", phoneNumber, ModelID, params, sign, "可以联系腾讯指定你的固定发送号码", "");
// System.out.print(singleSenderResult);
if (singleSenderResult.result != 0) {
//发送成功后的业务处理
}
return true;
}
}
用到的类
import com.github.qcloudsms.SmsMultiSender;
import com.github.qcloudsms.SmsMultiSenderResult;
import com.github.qcloudsms.SmsSingleSender;
import com.github.qcloudsms.SmsSingleSenderResult;
<!--sms-->
<dependency>
<groupId>com.github.qcloudsms</groupId>
<artifactId>qcloudsms</artifactId>
<version>1.0.2</version>
</dependency>
这个我前几天刚好写了一个 哈哈哈
//产品名称:云通信短信API产品,开发者无需替换
static final String product = "Dysmsapi";
//产品域名,开发者无需替换
static final String domain = "dysmsapi.aliyuncs.com";
// TODO 此处需要替换成开发者自己的AK(在阿里云访问控制台寻找)
static final String accessKeyId = "LTAIB4XO39hTMdVc";
static final String accessKeySecret = "4yO6P0HvDVY3Q3D330VfxvOpPUlX1r";
---------------
//组装请求对象-具体描述见控制台-文档部分内容
SendSmsRequest request = new SendSmsRequest();
//必填:待发送手机号
request.setPhoneNumbers(moble);
//必填:短信签名-可在短信控制台中找到
request.setSignName("洗衣");
//必填:短信模板-可在短信控制台中找到
request.setTemplateCode("SMS_134120317");
//可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
request.setTemplateParam("{\"name\":\"Tom\", \"code\":\""+randomCode(6)+"\"}");
public static void main(String[] args) throws ClientException, InterruptedException {
//发短信
//17621046454
SendSmsResponse response = SmsDemo.sendSms("17397327830");
System.out.println();
System.out.println("短信接口返回的数据----------------");
System.err.println("发送成功");
System.out.println("Code=" + response.getCode());
System.out.println("状态=" + response.getMessage());
System.out.println("RequestId=" + response.getRequestId());
System.out.println("BizId=" + response.getBizId());
Thread.sleep(3000L);
//查明细
if(response.getCode() != null && response.getCode().equals("OK")) {
QuerySendDetailsResponse querySendDetailsResponse = SmsDemo.querySendDetails(response.getBizId(),"17397327830");
System.out.println("短信明细查询接口返回数据----------------");
System.out.println("Code=" + querySendDetailsResponse.getCode());
System.out.println("Message=" + querySendDetailsResponse.getMessage());
int i = 0;
for(QuerySendDetailsResponse.SmsSendDetailDTO smsSendDetailDTO : querySendDetailsResponse.getSmsSendDetailDTOs())
{
System.out.println("SmsSendDetailDTO["+i+"]:");
System.out.println("内容=" + smsSendDetailDTO.getContent());
System.out.println("错误=" + smsSendDetailDTO.getErrCode());
System.out.println("OutId=" + smsSendDetailDTO.getOutId());
System.out.println("号码=" + smsSendDetailDTO.getPhoneNum());
System.out.println("ReceiveDate=" + smsSendDetailDTO.getReceiveDate());
System.out.println("时间=" + smsSendDetailDTO.getSendDate());
System.out.println("SendStatus=" + smsSendDetailDTO.getSendStatus());
System.out.println("Template=" + smsSendDetailDTO.getTemplateCode());
}
System.out.println("TotalCount=" + querySendDetailsResponse.getTotalCount());
System.out.println("RequestId=" + querySendDetailsResponse.getRequestId());
}
}
<groupId>com.alicom.dysms</groupId>
<artifactId>alicom-dysms-api</artifactId>
<version>1.0</version>
很简单啊 改几个参数就ok了 main 方法直接运行
用到的类
import com.github.qcloudsms.SmsMultiSender;
import com.github.qcloudsms.SmsMultiSenderResult;
import com.github.qcloudsms.SmsSingleSender;
import com.github.qcloudsms.SmsSingleSenderResult;