Я строю оставшийся клиент, используя 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