Я пытался получить параметры из JSON в запросе POST. Это кажется очень простым процессом, и я прочитал множество постов по этому поводу, но я что-то здесь упускаю, так как возвращаю объект, но поля в этом объекте пусты. В моем POST у меня есть следующий JSON ...
{
"client": "1",
"forTopic": "topic"
}
А вот мой метод POST внутри моего сервлета ...
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
String requestBody = RESTUtil.getRequestBody (request);
log.debug (requestBody);
try
{
JAXBContext context = JAXBContext.newInstance (ClientAndTopicParameters.class);
Unmarshaller unmarshal = context.createUnmarshaller ();
unmarshal.setProperty (UnmarshallerProperties.MEDIA_TYPE, "application/json");
unmarshal.setProperty (UnmarshallerProperties.JSON_INCLUDE_ROOT, true);
ClientAndTopicParameters params = (ClientAndTopicParameters) unmarshal.unmarshal (new StreamSource (new StringReader (requestBody)), ClientAndTopicParameters.class).getValue ();
log.debug ("params = " + params);
log.debug ("client = " + params.client);
log.debug ("forTopic = " + params.forTopic);
}
catch (JAXBException e)
{
log.error ("Unable to get Client and Topic parameters from POST.", e);
}
}
Наконец, вот мой класс ClientAndTopicParameters ...
@XmlRootElement
public class ClientAndTopicParameters
{
@XmlElement public String client;
@XmlElement public String forTopic;
}
В результате получается следующее ...
2018 Aug 24 17:44:55,806 DEBUG [MyServlet ] params = mypackage.ClientAndTopicParameters@2995a298
2018 Aug 24 17:44:55,806 DEBUG [MyServlet ] client = null
2018 Aug 24 17:44:55,806 DEBUG [MyServlet ] forTopic = null
Как видите, это довольно простые вещи. Я предполагаю, что упускаю что-то маленькое, чего просто не вижу. Приветствую любые мысли и идеи. Для справки я использую JAXB v2.3.0