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.