Вашей конечной точке передается вся строка запроса, потому что вы не указали, какую ее часть вы хотите использовать. Чтобы привязать только параметр запроса JSON
к вашему методу, попробуйте что-то вроде этого:
@POST
@Path("/")
@Consumes("application/x-www-url-formencoded")
@Produces("application/json")
public String processImmediately(@FormParam("JSON") String json) {
System.out.printf("Incoming JSON, decoded: %s\n", json);
// ....
}
* РЕДАКТИРОВАТЬ *
Вы выбираете привязку аргумента метода в зависимости от ожидаемого типа контента. Так, например, если ваш Content-Type равен application/x-www-form-urlencoded
(данные формы), вы должны связать @FormParam. В качестве альтернативы для Content-Type application/json
вы можете просто использовать тело запроса в виде строки.
@POST
@Path("/")
@Consumes("application/json")
@Produces("application/json")
public String processImmediately(String json) {
System.out.printf("Incoming JSON, decoded: %s\n", json);
// ....
}
Если вы обнаружите, что у вас есть данные в кодировке URL при использовании второго метода, то ваш клиент неправильно передает свои данные на сервер.