2016-01-06 4 views
0

У меня есть класс Java:Неподдерживаемого Типа носителя с запросом Java POST

@XmlRootElement 
public class RoomInfo { 
    @XmlElement 
    public String name; 
    @XmlElement 
    public String w; 
    @XmlElement 
    public String h; 
    @XmlElement 
    public String size; 
} 

И успокоительная веб-сервис:

@Path("/create") 
public class Create { 
    @POST 
    @Consumes("application/json") 
    public void getInfo(RoomInfo room){ 
     System.out.println("signal"); 
     System.out.println(room.name); 
     System.out.println(room.w); 
     System.out.println(room.h); 
     System.out.println(room.size); 
    } 
} 

Я пытаюсь отправить запрос POST с параметрами JSon с JavaScript:

var xh = new XMLHttpRequest(); 
var json = JSON.stringify({ 
    name: "Room1", 
    w: "2", 
    h: "4", 
    size: "12" 
}); 

xh.open("POST", 'http://localhost:8080/create', true); 
xh.setRequestHeader('Content-type', 'application/json; charset=utf-8'); 
console.log(json); 
xh.send(json); 

Но я получаю следующий вывод в консоли моего браузера:

{ "имя": "Room1", "ш": "2", "ч": "4", "размер": "12"}

Не удалось загрузить ресурс: сервер ответил статус 415 (Неподдерживаемый тип носителя)

Я понимаю, что по какой-то причине данные, которые я отправляю, не могут быть помещены в мой объект RoomInfo, но я не понимаю, почему.

Консоль сервера также показывает следующее: com.sun.jersey.spi.container.ContainerRequest.getEntity сообщение тело читалка для класса Java com.example.jersey.RoomInfo и Java класса типа com.example.jersey .RoomInfo и приложение типа мультимедиа MIME/json; charset = UTF-8 не найден. Зарегистрированные считыватели тела сообщений, совместимые с типом MIME-носителя: application/json; кодировка = UTF-8 ->

+0

Есть ли какие-либо исключения на консоли сервера? – gurvinder372

+0

@ gurvinder372 Да, я добавлю его к сообщению – seMikel

+0

что-то подобное http://stackoverflow.com/questions/7388288/jersey-restfull-service-with-json – gurvinder372

ответ

0

Для POST для корректной работы вашей POST необходимо установить заголовок 'Content-Type' в 'приложения/JSON'

Тогда ваш метод POST может также необходимо @Produces (MediaType .APPLICATION_JSON)

Также POJO нуждается в конструкторе по умолчанию, как указано выше.

Смежные вопросы