Отправка данных в формате даты из строки через получение Unirest POST - неверный ввод - PullRequest
0 голосов
/ 14 сентября 2018

Я отправляю запрос с отложенной датой на сервер. Запрос POST выглядит так:

{
   "text":"texst",
   "deferred_date":"2019-09-14 14:00"
}

Я отправляю его через Почтальон или Unirest на Java и получаю 201 Принятый результат . Сервер сохраняет это значение даты в формате «2019-09-14T14: 00: 00 + 03: 00».

Поскольку я изменяю свою дату в Java, окончательные данные сохраняются в строке

ГГГГ-ММ-дд чч: мм формат

DateFormat dateFormat = new SimpleDateFormat("YYYY-MM-dd hh:mm");
String deferredTime = "";
deferredTime = dateFormat.format(oldTime);

Мой исходный пост Unirest имеет следующую конструкцию корпуса:

    .body("{\"text\":\"...\",\"deferred_date\":\"2019-09-14 06:03\"}")

и все работает нормально, но если я использую свою строку deferredTime в моем POST:

    .body("{\"text\":\"...\",\"deferred_date\":\"" + deferredTime + "\"}")

Я получаю 400 Ошибка неверного запроса

{
   "userMessage":"Invalid input.",
   "errorCode":"invalid",
   "fields":{
      "deferred_date":[
         "Posting date Date has wrong format. Use one of these formats instead: YYYY-MM-DDThh:mm[:ss[.uuuuuu]][+HH:MM|-HH:MM|Z]."
      ]
   },
   "internalMessage":"Invalid input."
}

Я не понимаю, почему это не работает, если переменная deferredTime String сохраняет то же значение «ГГГГ-ММ-дд чч: мм», которое использовалось ранее. Есть предложения?

1 Ответ

0 голосов
/ 16 сентября 2018

В соответствии с ответом Ole VV, я использовал строку LocalDateTime для сохранения даты в формате «2018-09-16T10: 41: 48.619» вместо SimpleDateFormat, в которой дата хранится в формате «2018-09-16 10:41»».Теперь, с правильным форматом, я получаю результат 201 Принято

...