Автоматическая отправка 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;
        }

Нужно чтобы этот запрос уходил автоматически по расписанию.

Как это сделать? Гугление результатов не дало, если кто может поделиться ссылкой на подходящий материал буду благодарен.


Ответы (0 шт):