У меня есть JQuery Ajax вызов, как это:406 Ошибка при отправке JSON Спринг контроллер
$.ajax({
type: "post",
url: url,
data: JSON.stringify(formSubmit),
contentType: "application/json",
dataType: "json",
success: function(xhr,status) {
console.log("Return Data:"+xhr.responseText)
});
Мой контроллер выглядит следующим образом:
@RequestMapping(value = "/doIt", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
@ResponseBody
public MyObject activityPerformed(HttpServletRequest request, HttpServletResponse response, @RequestBody String jsonData) {
logger.debug("JSON INPUT:"+jsonData);
MyObject o = new MyObject("STUFF");
return o;
}
Это бросает ошибку 406. Я могу видеть в моем браузере, что у меня есть это в моих заголовках ответа:
Content-Type:"text/html;charset=utf-8"
который я думал, что производит часть отображения должна быть исправлена.
Когда я удаляю «contentType» вызова ajax, я не получаю ошибку 406, но затем параметр jsonData в URLEncoded. Нет, я предполагаю, что могу сделать декодирование, но это, я думаю, не «правильно».
Как я могу отправить JSON без кодировки URL-адреса без содержимого contentType: «application/json» в вызове ajax?
ИЛИ как установить тип содержимого ответа контроллера?
Вы проверили журнал безопасности сервера? Apache генерирует ошибку, когда запрос нарушает правила mod_security. Таким образом, это может быть не ваш запрос jsonData, вызывающий ошибку. – Dexter
Я использую tomcat 8.0.30 – mmaceachran
Другой человек с вашей настройкой и той же проблемой: http://stackoverflow.com/questions/7462202/spring-json-request-getting-406-not-acceptable. Я не уверен, что такое ваша настройка, но это может помочь вам найти источник ошибки, чтобы вы знали, какие детали предоставить. Они не используют одни и те же заголовки запросов, как вы, но ответы могут показать вам, в каком направлении идти. – Dexter