Ваш метод Java настроен на использование JSON (@Consumes(MediaType.APPLICATION_JSON)
).Это означает, что JAX-RS пытается проанализировать тело вашего запроса POST в объект JSON, а затем сопоставить его с типом параметра вашей функции-потребителя, в данном случае String
.
Поскольку вы на самом деле неотправляя объект JSON с вашим запросом POST, вы должны сообщить JAX-RS, что вы хотите получить необработанный текст из полезной нагрузки:
@Consumes(MediaType.TEXT_PLAIN)
В качестве альтернативы, вы можете использовать JSON!Поскольку вы упоминаете, что ваш параметр является целым числом, в этом примере используется объект JSON с одним целочисленным параметром с именем jobId
:
/**
* This class is used by JAX-RS to parse to and from JSON. The field
* names used here (and by extension the getters and setters) should
* match those used in your JSON.
*/
class InputRequest {
int jobId;
public String getJobId() {
return jobId;
}
public void setJobId(int jobId) {
this.jobId = jobId;
}
}
@POST
@Path("module")
@Consumes(MediaType.APPLICATION_JSON)
public List<ModuleProcCount> getInput(InputRequest reqPayload) throws IOException {
int jobId = reqPayload.getJobId();
}
На стороне клиента angular автоматически преобразует объект, переданный для полезной нагрузки, вСтрока JSON и устанавливает для вас заголовок Content-type
( ref ).
$http.post('rest/performance/module', {
jobId: 123456
});