2015-06-28 1 views
1

Спасибо за помощь. Я разрабатываю простой веб-сервис RESTful, используя JSON в качестве медиа-типа. Я успешно использовал JSON в методе GET и DELETE с использованием @Produces(MediaType.APPLICATION_JSON). Однако, когда я хочу реализовать POST метод с использованием @Produces(MediaType.APPLICATION_JSON) и @Consumes(MediaType.APPLICATION_JSON) я получаю следующую ошибку:Проблемы с использованием @Consumes (MediaType.APPLICATION_JSON) в веб-службе RESTful

<h1>HTTP Status 415 - Unsupported Media Type</h1> 
     <HR size="1" noshade="noshade"> 
      <p> 
       <b>type</b> Status report 
      </p> 
      <p> 
       <b>message</b> 
       <u>Unsupported Media Type</u> 
      </p> 
      <p> 
       <b>description</b> 
       <u>The server refused this request because the request entity is in a format not supported by the requested resource for the requested method.</u> 
      </p> 

Мой исходный код является следующим. ВСЕ методы работают, за исключением метода POST: пакет RESTful.library.resources;

import java.util.List; 

import javax.ws.rs.Consumes; 
import javax.ws.rs.DELETE; 
import javax.ws.rs.GET; 
import javax.ws.rs.POST; 
import javax.ws.rs.Path; 
import javax.ws.rs.PathParam; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.MediaType; 

import RESTful.library.service.BookService; 
import RESTful.library.model.Books; 


/** This class will implement all the request on the resource: 
* GET 
* PUT 
* DELETE 
* POST 
*/ 
@Path("/books") 
public class BookResource { 

    DataBaseSQLite db = new DataBaseSQLite(); 
    BookService bookService = new BookService(); 

    @GET 
    @Produces(MediaType.APPLICATION_JSON) 
    public List<Books> getBooks(){ 
     List<Books> books = bookService.getAllBooks();  
     return books; 
    } 

    @GET 
    @Path("/{bookID}") 
    @Produces(MediaType.APPLICATION_JSON) 
    public Books getBook(@PathParam("bookID") int ID){ 
     return bookService.getBook(ID); 

    } 

    @POST 
    @Consumes(MediaType.APPLICATION_JSON) 
    @Produces(MediaType.APPLICATION_JSON) 
    public Books addBook(Books book) { 
     if (book != null) 
      return bookService.addBook(book); 
     return null; 
    } 

    @DELETE 
    @Path("/{bookID}") 
    @Produces(MediaType.APPLICATION_JSON) 
    public String removeBook(@PathParam("bookID") int ID){ 
     boolean removed= bookService.deleteBook(ID); 
     String answer="Removed successfully"; 
     if(removed = false){ 
      answer="Not removed"; 
     } 
     return answer; 
    } 

    @GET 
    @Path("/name/{bookName}") 
    @Produces(MediaType.APPLICATION_XML) 
    public Books findBook(@PathParam("bookName") String name) { 
     if (name != null) 
      return bookService.findBook(name); 
     return null; 

    } 
} 

Я имею в pom.xml следующей зависимости удовлетворены:

<dependency> 
      <groupId>org.glassfish.jersey.media</groupId> 
      <artifactId>jersey-media-moxy</artifactId> 
</dependency> 

Мой запрос отправляется следующим способом, используя Почтальон: POST request using JSON

Есть ли у вас какие-либо идеи, что может быть проблемой? Заранее спасибо.

Приветствия

+0

И как ваш запрос HTTP выглядит , Вы уверены, что отправляете заголовок Content-Type и Accept в качестве приложения/json для запроса POST? –

+0

Спасибо за ваш ответ. Я опубликовал снимок экрана запроса POST, пытаясь включить все детали. – Xalapa

+1

Можете ли вы показать заголовки http в своем запросе? –

ответ

0

Решение включить в заголовок:

Content-Type в заголовке и значение в качестве приложения-JSON

Solution POST request

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