HTTP REST При вызове приложения весенней загрузки не будет иметь параметр datetime в запросе - PullRequest
0 голосов
/ 14 марта 2019

У меня есть приложение Spring Boot, развернутое в Pivotal Cloud Foundry, написанное на Java. Существует серверное приложение, которое выполняет вызов POST REST для этого приложения. В качестве полезной нагрузки используется дата и время, я сохраняю параметр в виде строки в объекте closeRequest из приложения сервера:

class closeRequest
{
    String dueDateGmt;
    Integer orgId;
    Boolean closeFlag;
    String strategyName;
}

Я форматирую dueDateGmt следующим образом: 2019-03-12T15: 00: 47-05: 00 DueDateGmt устанавливается в приложении сервера. У меня есть отладочные операторы, чтобы увидеть значение. Когда я использую Postman для запуска строки JSON в приложении Spring Boot, ответ успешен. Когда я запускаю приложение с помощью серверного приложения, чтобы выполнить вызов REST для приложения Spring Boot, значение dueDateGmt в загрузочном приложении Spring равно null.

class closeRequest
    {
        ZonedDateTime dueDateGmt;
        Integer orgId;
        Boolean closeFlag;
        String strategyName;
    }

Я не понимаю, как взять JSON и перевести строковую дату в ZonedDateTime. Когда переменная представляет собой Integer, Float или String, отображение из JSON (строка) -> Integer, Float, String - автоматически. В настоящее время это то, что я делаю ..

  1. Серверное приложение - ZonedDateTime - dueDate - преобразовано в строку
  2. Отправлено в приложение SpringBoot через JSON
  3. Приложение Spring Boot - отображается ZonedDateTime dueDate - оно пустое.

UPDATE

Серверное приложение получает дату из приложения в нетрадиционном формате. Это выглядит так: 2019 3 5 11 30 30 -5 ГГГГ М Д ЧЧ ММ сс GMT

Я преобразую его, используя собственный метод, который я написал, в обычный формат, например, такой: 2019-03-12T15: 00: 47-05: 00

Это метод:

 public static String formatScannerDateTimeToDateTimeString(String dateTimeString)
  {
      DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy d M H m s Z", Locale.ENGLISH);
      ZonedDateTime zonedDateTime = ZonedDateTime.parse(adjustTZ(dateTimeString), formatter);
      return zonedDateTime.toString();
  }

  public static String adjustTZ(String dateTimeStamp)
  {
         StringBuilder adjustedDateTimeStamp = new StringBuilder(dateTimeStamp);
         if (dateTimeStamp != null)
         {
                int tzPos = dateTimeStamp.indexOf('-');
                if (tzPos > -1)
                {
                      adjustedDateTimeStamp = new StringBuilder(dateTimeStamp.substring(0, tzPos+1));
                      String tzPortion = dateTimeStamp.substring(tzPos+1);
                      adjustedDateTimeStamp.append(("00" + tzPortion).substring(tzPortion.length()));
                      adjustedDateTimeStamp.append("00");
                }
         }
         return adjustedDateTimeStamp.toString();
  }

1 Ответ

0 голосов
/ 15 марта 2019

Проблема была решена удалением аннотации @JsonProperties, которую мы изначально хотели использовать Джексоном для отображения переменных в классе. Единственное, что НЕ было удалено, было duedtgmt. После удаления запрос может быть отображен на стороне REST приложения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...