gpt4 book ai didi

java - 在给定日期发送自动消息

转载 作者:太空宇宙 更新时间:2023-11-04 09:48:38 26 4
gpt4 key购买 nike

我用 Java 制作了一个 SMS 应用程序,它的工作方式非常出色。我希望应用程序在给定日期发送短信。我正在使用 Quartz 作业调度。首先,我需要将这两个应用程序相互连接。然后我需要 Quartz 从列表(可以是 Excel 列表)中收集日期和时间并发送消息。这可能吗?感谢任何帮助。

这是消息应用程序:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import org.apache.commons.codec.binary.Base64;

public class SMSApplication {

public static void main(String[] args) {

try {
String phoneNumber = "+XXXXXXXXX";
String appKey = "XXXXXXX";
String appSecret = "XXXXXXXX";
String message = "Hello world!";

URL url = new URL("https://messagingapi.sinch.com/v1/sms/" + phoneNumber);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/json");

String userCredentials = "application\\" + appKey + ":" + appSecret;
byte[] encoded = Base64.encodeBase64(userCredentials.getBytes());
String basicAuth = "Basic " + new String(encoded);
connection.setRequestProperty("Authorization", basicAuth);

String postData = "{\"Message\":\"" + message + "\"}";
OutputStream os = connection.getOutputStream();
os.write(postData.getBytes());

StringBuilder response = new StringBuilder();
BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));

String line;
while ( (line = br.readLine()) != null)
response.append(line);

br.close();
os.close();

System.out.println(response.toString());

} catch (IOException e) {
e.printStackTrace();
}

}

}

这是 Quartz 作业类:

import java.util.Date;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class QuartzJob implements Job{

@Override
public void execute(JobExecutionContext jec) throws JobExecutionException {

System.out.println("Hello");
System.out.println(new Date())
}
}

这是 Quartz 主类:

import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.ScheduleBuilder;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;


public class QuartzMain {

public static void main(String[] args) throws SchedulerException {

JobDetail job = JobBuilder.newJob(QuartzJob.class).build();

Trigger tl = TriggerBuilder.newTrigger().withIdentity("SimpleTrigger").startNow().build();

Scheduler sc = StdSchedulerFactory.getDefaultScheduler();

sc.start();
sc.scheduleJob(job, tl);

}}

最佳答案

要从给定日期开始:

在触发器中,将 .startNow() 替换为 .startAt(date),其中日期是表示应开始的日期和时间的 java.util.Date

连接:

在您的 Quartz 作业类中调用您的 sendSMS() 方法(当前是 SMSApplication 中的主方法),任何变量(例如电话号码)都应该使用 .usingJobData("key","value") 传递到作业构建器中的作业类。请参阅http://www.quartz-scheduler.org/documentation/quartz-2.3.0/并阅读教程和食谱以获取更多信息。

关于java - 在给定日期发送自动消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55098002/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com