Автоматическая отправка post-запроса с сервера по расписанию (с определенным временным интервалом)
Есть функция контроллера, которая формирует и отправляет POST-запрос к стороннему сервису и получает от него данные при нажатии на кнопку:
[HttpPost]
[Route("requestqrcodesreceivingadm")]
public async Task<IActionResult> RequestQRcodesReceiving([FromBody] DateTimeDTO dateTimeStr)
{
string url = "https://ххххх/app/api/barcodes/get.php";
ReportQrCodeExchange reportQrCodeExchange = new ReportQrCodeExchange();
ResponseMessageDataQRCode responseData = null;
string dateTimeNow;
DateTime dateTimeFront;
if (dateTimeStr != null && dateTimeStr.Date !=null && !dateTimeStr.Date.Equals("") && dateTimeStr.Time != null && !dateTimeStr.Time.Equals(""))
{
String[] date = dateTimeStr.Date.Split('-');
string[] time = dateTimeStr.Time.Split(':');
dateTimeFront = new DateTime(Convert.ToInt32(date[0]), Convert.ToInt32(date[1]), Convert.ToInt32(date[2]), Convert.ToInt32(time[0]), Convert.ToInt32(time[1]),0);
dateTimeNow = dateTimeFront.ToString("yyyy-MM-dd hh:mm:ss");
}
else
{
DateTime dateTimeUTC = DateTime.UtcNow;
dateTimeNow = dateTimeUTC.AddHours(3).ToString("yyyy-MM-dd hh:mm:ss");
}
Dictionary<string, string> requestMessageDict = new Dictionary<string, string>
{
["token"] = "ххххххххххххххххххххххххххххххххххххххх",
["date"] = dateTimeNow
};
try
{
responseData = await PostRequestFormAsync(url, requestMessageDict, "");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
return Ok(reportQrCodeExchange);
}
private async Task<ResponseMessageDataQRCode> PostRequestFormAsync(string url, IEnumerable<KeyValuePair<string, string>> data, string str)
{
ResponseMessageDataQRCode responseData = null;
using var request = new HttpRequestMessage(HttpMethod.Post, url)
{
Content = new FormUrlEncodedContent(data)
};
request.Headers.Add("Application", "remoteData");
var response = await httpClient.SendAsync(request).ConfigureAwait(false);
string jsonResponseData = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
if (response.IsSuccessStatusCode)
{
if (FindItemsToken(jsonResponseData)== JsonTokenType.StartObject)
{
responseData = JsonSerializer.Deserialize<ResponseMessageDataQRCodeSuccessfully>(jsonResponseData);
}
else if(FindItemsToken(jsonResponseData) == JsonTokenType.StartArray)
{
responseData = JsonSerializer.Deserialize<ResponseMessageDataQRCodeError>(jsonResponseData);
}
}
else {
responseData = JsonSerializer.Deserialize<ResponseMessageDataQRCodeError>(jsonResponseData);
}
return responseData;
}
Нужно чтобы этот запрос уходил автоматически по расписанию.
Как это сделать? Гугление результатов не дало, если кто может поделиться ссылкой на подходящий материал буду благодарен.