Estoy utilizando el cliente de jersey para hacer que call to rest webservice.No se encontró un escritor de cuerpo de mensaje para el tipo de Java, clase net.sf.json.JSONObject y tipo de medio MIME, application/json
Mi servicio web está consumiendo el json, así que tengo que poner json al hacer una llamada a mi proveedor de servicios web.
Lo estoy haciendo de la siguiente manera.
JSONObject object=new JSONObject();
object.put("name", employee.getName());
object.put("empId", employee.getEmpId());
object.put("organizationName", employee.getOrganizationName());
ClientResponse response = service.path("rest").path("vtn").path("addEmplyee")
.type(MediaType.APPLICATION_JSON_TYPE).post(ClientResponse.class, object);
pero yo estoy recibiendo el siguiente excepción:
09: 52: 01,625 ERROR [[mvc-despachador]] Servlet.service() para servlet mvc-despachador arrojó excepción com .sun.jersey.api.client.ClientHandlerException: un escritor de cuerpo de mensaje para el tipo de Java, clase net.sf.json.JSONObject y MIME media tipo, aplicación/json, no se encontró en com.sun.jersey. api.client.RequestWriter.writeRequestEntity (RequestWriter.java:288) en com.sun.jersey.client.urlconnection.URLConnectionClientHandler._invoke (URLConnectionClientHandler.java:204) en com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle (URLConnectionClientHandler.java:147) en com.sun. jersey.api.client.Client.handle (Client.java:648) en com.sun.jersey.api.client.WebResource.handle (WebResource.java:670) en com.sun.jersey.api.client. WebResource.access $ 200 (WebResource.java:74) en com.sun.jersey.api.client.WebResource $ Builder.post (WebResource.java:563) en com.nec.jp.pflow.unc.service.EmployeeService .addEmployee (EmployeeService.java:44) en com.nec.jp.pflow.unc.controller.EmployeeController.addCustomer (EmployeeController.java:29) at sun.reflect.NativeMethodAccessorImpl.i nvoke0 (Nativo Método) en sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) en sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25)
Pero si puedo convertir mi JSON para cadena de representación como:
String input = "{\"name\" : \"" + employee.getName() + "\",\"empId\" : \"" + employee.getEmpId() + "\",\"organizationName\" : \"" + employee.getOrganizationName() + "\"}";
ClientResponse response = service.path("rest").path("vtn").path("addEmplyee")
.type(MediaType.APPLICATION_JSON_TYPE).post(ClientResponse.class, input);
y funciona bien.
Sugiera cómo puedo poner mi objeto JSON sin obtener la excepción anterior. ¿Cuál es la mejor manera?
Gracias de antemano.
Obtuve una solución para lo anterior. Ahora estoy haciendo uso de la api jackson-mapper para convertir el POJO en json.
A continuación se muestra el fragmento de código.
ObjectMapper mapper = new ObjectMapper();
ClientResponse response = resource.path("rest").path("vtn").path("addEmplyee")
.type(MediaType.APPLICATION_JSON_TYPE).post(ClientResponse.class, mapper.writeValueAsString(employee));
Si has encontrado una solución, puede publicar que a medida que la respuesta y seleccionarla usted mismo. De lo contrario, esta pregunta parece sin respuesta. – Patrick