在给定日期发送自动消息

问题描述 投票:1回答:1

我用Java做了一个短信应用程序,就像一个魅力。我希望应用程序在给定日期发送短信。我正在使用Quartz Job Scheduling。首先,我需要将这两个应用程序相互连接。然后我需要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);

    }}
java sms quartz-scheduler sinch
1个回答
0
投票
To start at a given date:

在触发器中用.startNow()替换.startAt(date),日期是java.util.Date,代表它应该开始的日期和时间。

To connect:

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

© www.soinside.com 2019 - 2024. All rights reserved.