Я использую джерси-клиент для совершения звонка на отдых в webservice.Писатель тела сообщения для типа Java, класс net.sf.json.JSONObject и тип носителя MIME, application/json, не был найден
Мой веб-сервис потребляет json, поэтому мне нужно поставить json на вызов моего провайдера webservice.
Я делаю это внизу.
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);
, но я получаю ниже исключение:
09: 52: 01625 ERROR [[MVC-диспетчерская]] Servlet.service() для сервлета Mvc-диспетчеру бросил исключение ком .sun.jersey.api.client.ClientHandlerException: писатель тела сообщения для типа Java, класс net.sf.json.JSONObject и MIME media тип, приложение/json, не найдено на com.sun.jersey. api.client.RequestWriter.writeRequestEntity (RequestWriter.java:288) at com.sun.jersey.client.urlconnection.URLConnectionClientHandler._invoke (URLConnectionClientHandler.java:204) at com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle (URLConnectionClientHandler.java:147) at com.sun. jersey.api.client.Client.handle (Client.java:648) at com.sun.jersey.api.client.WebResource.handle (WebResource.java:670) at com.sun.jersey.api.client. WebResource.access $ 200 (WebResource.java:74) на com.sun.jersey.api.client.WebResource $ Builder.post (WebResource.java:563) на com.nec.jp.pflow.unc.service.EmployeeService .addEmployee (EmployeeService.java:44) at com.nec.jp.pflow.unc.controller.EmployeeController.addCustomer (EmployeeController.java:29) at sun.reflect.NativeMethodAccessorImpl.i nvoke0 (Native Method) на sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25)
Но если я конвертировать мой JSON в строковое представление, подобное:
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);
тогда он отлично работает.
Просьба предложить, как я могу разместить свой объект JSON без получения вышеуказанного исключения. Каков наилучший способ?
Заранее спасибо.
У меня есть решение для вышеперечисленного. Теперь я использую jackson-mapper api для преобразования POJO в json.
Ниже приведен фрагмент кода.
ObjectMapper mapper = new ObjectMapper();
ClientResponse response = resource.path("rest").path("vtn").path("addEmplyee")
.type(MediaType.APPLICATION_JSON_TYPE).post(ClientResponse.class, mapper.writeValueAsString(employee));
Если вы нашли решение, вы можете оставить, что в качестве ответа и выбрать его самостоятельно. В противном случае этот вопрос остается без ответа. – Patrick