如何使用Java调用腾讯云短信接口发送短信

图片说明
这是导入的整个项目,除了发送类“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;