Я использую Джерси с предложением сделать веб-сервис.
Я пытаюсь сделать это метод @Post, который получает 3 параметра по форме и 1 по URL.
@POST
@Path("/{contestType}/pay")
public Response pay(@PathParam("contestType") String contestType,
@FormParam("contestId") Long contestId, @FormParam("username") String username,
@FormParam("amount") Long amount)
{
User user = dao.getByKey(User.class, username);
if (user == null)
return Response.status(Status.NOT_FOUND.getStatusCode(), "username not valid").build();
Contest contest = dao.getByKey(Contest.class, contestId);
if (contest == null)
return Response.status(Status.NOT_FOUND.getStatusCode(), "contest not valid").build();
try
{
if (contestType.equals("raffles"))
user.pay(contest, amount);
else
user.pay(contest);
}
catch (ContestException | PaymentException e)
{
Logger.getGlobal().log(Level.WARNING, e.getLocalizedMessage(), e);
}
return Response.ok().build();
}
Но когда я делаю это, я получаю предупреждение от затмения: в методе с аннотацией javax.ws.rs.POST допускается только один аннотированный параметр.А также при выполнении я получаю следующую ошибку:
сообщение java.lang.IllegalStateException: @FormParam используется, когда тип содержимого объекта запроса не является application / x-www-form-urlencoded
javax.servlet.ServletException: java.lang.IllegalStateException: The @FormParam is utilized when the content type of the request entity is not application/x-www-form-urlencoded
org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:432)
org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:370)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:389)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:342)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:229)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
causa raíz
Мне нужно получить Json от клиента, поэтому я не могу использовать application / x-www-form-urlencoded, а также не хочу создавать бесконечные объекты POJO для каждого @Post, который у меня есть,Как правильно решить эту проблему?