HttpServletRequest весной получает значения параметров как нулевые для пост-запроса

@ResponseBody

@RequestMapping(value = {"apiRequest"}, method = {RequestMethod.POST})

public String contestApiSignUp(HttpServletRequest req) throws JSONException {
try {
    String username = req.getParameter("username");
    String firstname = req.getParameter("firstname");
    String lastname = req.getParameter("lastname");
    String password = req.getParameter("password");
    String phone = req.getParameter("phone");

Здесь все значения, которые я получаю, равны нулю. То есть username =null, firstname =null...

Я отправляю запрос на отправку сообщений со значениями http://localhost:8080/apiRequest.htm

username = Subhajit
firstname = Subha
...

как это.

Но пока я использую тот же код, но,

@RequestMapping(value = {"apiRequest"}, method = {RequestMethod.GET})

используя GET вместо POST, тогда я получаю правильные значения.

2 ответа

Когда вы отправляли свою HTML-форму с помощью POST на ваш URL /apiRequest, заполняли ли вы свои данные (имя пользователя, имя и т. Д.) В полях своей формы, или вы прикрепляли их к отправленному URL-адресу (например, apiRequest.htm?username=test&...)

Поскольку при втором подходе ваши данные будут доступны только через запрос GET, а не POST. Первый подход будет работать с запросом POST.

Кроме того, вам не нужно явно вызывать getParameter для HttpServletRequest в Spring Controller.

Вы можете сделать это:

@ResponseBody
@RequestMapping (value = "apiRequest", method = RequestMethod.POST)
public String contestApiSignUp(
        @RequestParam ("username") String username,
        @RequestParam ("firstname") String firstname,
        @RequestParam ("lastname") String lastname,
        @RequestParam ("password") String password,
        @RequestParam ("phone") String phone) {
    return "Hello World";
}

Из комментариев вы сказали, что пытаетесь с почтальоном опубликовать запрос. Так вы создаете сайт или веб-сервисы? В любом случае вы не должны отправлять свои данные в заголовки.

  • Если вы создаете веб-сайт, соберите HTML-файл, из которого вы можете отправить форму этому контроллеру.
  • Если вы создаете веб-сервис, измените контроллер и разрешите ему принимать тело в формате JSON (или XML, хотя я бы это не одобрял). Следуйте этому /questions/4249363/kak-sopostavit-json-obektu-s-pomoschyu-vesennej-zagruzki/4249372#4249372. А затем от почтальона (или завиток), вместо этого отправьте JSON.
Другие вопросы по тегам