Преобразование POJO в JSON при выполнении пост-запроса к REST-сервису - PullRequest
0 голосов
/ 09 января 2020

Я строю оставшийся клиент, используя JAX-RS API. Я создал POJO-представление JSON, ожидаемое службой в теле сообщения. Когда я делаю пост, используя приведенный ниже код, я получаю код ответа 500:

Response docPostResponse = inTargetInitializer
        .getDocumentCollectionTarget()
        .request(MediaType.APPLICATION_JSON)
        .headers(buildAuthHeaders())
        .post(Entity.entity(doc, MediaType.APPLICATION_JSON))

Я использовал попытался использовать следующий подход, чтобы убедиться, что мое моделирование POJO JSON было правильным, и это Метод работает нормально, и мой пост-запрос создает новый ресурс на сервере.

ObjectMapper mapper = new ObjectMapper();
   inTargetInitializer
        .getDocumentCollectionTarget()
        .request(MediaType.APPLICATION_JSON)
        .headers(buildAuthHeaders()).post(Entity.json(mapper.writeValueAsString(doc)));

Я искал помощи в понимании проблемы моего первого подхода.

Обновление: когда я пытался получить сущность из ответа, я получаю следующее исключение.

Exception in thread "main" javax.ws.rs.client.ResponseProcessingException: Problem with reading the data, class com.imagenow.rest.entities.Document, ContentType: application/json.
    at org.apache.cxf.jaxrs.impl.ResponseImpl.reportMessageHandlerProblem(ResponseImpl.java:439)
    at org.apache.cxf.jaxrs.impl.ResponseImpl.doReadEntity(ResponseImpl.java:379)
    at org.apache.cxf.jaxrs.impl.ResponseImpl.readEntity(ResponseImpl.java:320)
    at org.apache.cxf.jaxrs.impl.ResponseImpl.readEntity(ResponseImpl.java:310)
    at us.nm.state.hsd.webservices.sbm.ImageNowRestBuilder.getDocFromImageNow(ImageNowRestBuilder.java:232)
    at com.aspen.imgnow.rest.InvokeImageNowStoreClient.main(InvokeImageNowStoreClient.java:16)
Caused by: javax.ws.rs.BadRequestException: HTTP 400 Bad Request
    at org.apache.cxf.jaxrs.utils.SpecExceptions.toBadRequestException(SpecExceptions.java:84)
    at org.apache.cxf.jaxrs.utils.ExceptionUtils.toBadRequestException(ExceptionUtils.java:121)
    at org.apache.cxf.jaxrs.provider.AbstractJAXBProvider.handleExceptionEnd(AbstractJAXBProvider.java:710)
    at org.apache.cxf.jaxrs.provider.AbstractJAXBProvider.handleXMLStreamException(AbstractJAXBProvider.java:742)
    at org.apache.cxf.jaxrs.provider.json.JSONProvider.readFrom(JSONProvider.java:263)
    at org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBodyReader(JAXRSUtils.java:1352)
    at org.apache.cxf.jaxrs.impl.ResponseImpl.doReadEntity(ResponseImpl.java:370)
    ... 4 more
Caused by: javax.xml.stream.XMLStreamException: java.io.IOException: stream is closed
    at org.codehaus.jettison.AbstractXMLInputFactory.createXMLStreamReader(AbstractXMLInputFactory.java:118)
    at org.apache.cxf.jaxrs.provider.json.utils.JSONUtils.createStreamReader(JSONUtils.java:163)
    at org.apache.cxf.jaxrs.provider.json.JSONProvider.createReader(JSONProvider.java:293)
    at org.apache.cxf.jaxrs.provider.json.JSONProvider.createReader(JSONProvider.java:283)
    at org.apache.cxf.jaxrs.provider.json.JSONProvider.readFrom(JSONProvider.java:235)
    ... 6 more
Caused by: java.io.IOException: stream is closed
    at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.ensureOpen(HttpURLConnection.java:3378)
    at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(HttpURLConnection.java:3403)
    at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(HttpURLConnection.java:3398)
    at org.codehaus.jettison.AbstractXMLInputFactory.readAll(AbstractXMLInputFactory.java:136)
    at org.codehaus.jettison.AbstractXMLInputFactory.createXMLStreamReader(AbstractXMLInputFactory.java:115)
    ... 10 more
...