Задать вопрос
@artshelom

Как отправить post запрос spring mvc??

Помогите отправляю запрос через Postman сам запрос({"readTimestamp":"54645646","meteoStationId":"4545","pressuere":"4564564"})
Приходит ошибка 400-The request sent by the client was syntactically incorrect.

Как исправить не понимаю принимает:
@JsonView(Views.Public.class)
    @RequestMapping(params = {"meteoStationId", "readTimestamp", "temoerature", "pressuere", "windDirection", "windSpeed"},value = "/update", method = RequestMethod.PUT)
    public @ResponseBody AjaxResponseBody update(
            @RequestParam(value = "meteoStationId")@NotNull String meteoStationIdS,
            @RequestParam(value = "readTimestamp")@NotNull String readTimestampS,
            @RequestParam(value = "temoerature") String temoeraturS,
            @RequestParam(value = "pressuere") String pressuereS,
            @RequestParam(value = "windDirection") String windDirectionS,
            @RequestParam(value = "windSpeed") String windSpeedS
    ){
        AjaxResponseBody result = new AjaxResponseBody();
        Long meteoStationId = Long.parseLong(meteoStationIdS);
        Timestamp readTimestam = new Timestamp(Long.parseLong(readTimestampS));
        WeatherStation station = weatherStationsBD.getOne(meteoStationId, readTimestam);
        if (station==null){
            result.setCode("error");
            result.setMsg("error");
            return result;
        }
        if (temoeraturS!=null) {
            BigDecimal temoerature = new BigDecimal(temoeraturS);
            station.setTemoerature(temoerature);
        }
        if (windDirectionS!=null) {
            Integer windDirection = Integer.parseInt(windDirectionS);
            station.setWindDirection(windDirection);
        }
        if (pressuereS!=null) {
            Integer pressuere = Integer.parseInt(pressuereS);
            station.setPressuere(pressuere);
        }
        if (windSpeedS!=null) {
            Integer windSpeed = Integer.parseInt(windSpeedS);
            station.setWindSpeed(windSpeed);
        }

        weatherStationsBD.add(station);
        result.setCode("200");
        result.setMsg("OK");
        return result;
    }
  • Вопрос задан
  • 2330 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
zolt85
@zolt85
Программист
Ну, во первых, Ваш метод отмечен параметром
..., method = RequestMethod.PUT.
Соответственно, принимать он будет только PUT запросы.
Во вторых, Вы отправляете в запросе ТЕЛО, но ни как не параметры запросы. Но в сигнатуре Вашего метода Вы говорите, что параметры метода нужно взять из строки запроса (аннотация @RequestParam нам об этом говорит).
Таким образом, чтобы метод сработал в таком его виде, Вам нужно выполнить PUT запрос с параметрами в строке запроса. Строка запроса будет выглядеть примерно так:
/update?&readTimestamp=54645646&meteoStationId=4545&pressuere=4564564&так далее.

Если хотите отправлять данные в JSON, и получать их в методе из тела запроса, то лучше создать класс Measurement, например. В него положить те поля, которые у Вас сейчас в сигнатуре метода описаны. И привести сигнатуру метода update к виду:
public @ResponseBody AjaxResponseBody update(@RequestBody Measurement measurement) { ... }


Надеюсь, доступно объяснил ...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы