JAX-RS POST метод 415 Неподдерживаемый тип носителя
Я знаю, что есть некоторые темы с тем же вопросом, но я не могу его правильно запустить. Я все еще очень новичок в этом.
У меня работает сервер JAX-RS:
GET
метод работает. POST
метод не.
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response post(Movie movie){
System.out.println("In the POST method");
String result = movie.toString();
return Response.status(201).entity(result).build();
В моем Oracle JET Client я хочу сделать сообщение:
addMovie = function(){
console.log("post sent");
$.ajax({
type: "POST",
url: "http://localhost:8080/MovieRestService/resources/movies",
headers: {
"Content-Type": "application/json"
},
data:
{
id: 2,
name: "test",
director: "test",
year: 234
},
success: "success",
dataType: 'application/json'
});
Это продолжает давать мне 415 Unsupported Media Type
ошибка. Что-то, что кажется мне немного странным, это то, что в заголовке ответа тип контента text/html Content-Type: text/htlm
У кого-нибудь есть решение?
РЕДАКТИРОВАТЬ:
После долгих поисков в сети мне, наконец, удалось выяснить, в чем реальная проблема... Похоже, что в Glassfish 4.1.1 есть ошибка, которая вызвала проблемы при создании сообщения на моем сервере...
1 ответ
Решение
Это должно работать
var url = 'http://localhost:8080/MovieRestService/resources/movies';
var sucessCallback = function(response) {...}
var data = JSON.stringify({
id: 2,
name: "test",
director: "test",
year: 234
});
$.ajax({
url: url,
method: POST,
contentType: 'application/json; charset=utf-8',
dataType: 'json',
data: data,
cache: false,
context: this,
}).success(sucessCallback);