【发布时间】:2012-08-16 10:35:08
【问题描述】:
我正在使用 jersey 客户端调用 rest webservice。
我的网络服务正在使用 json,所以我需要将 json 用于调用我的网络服务提供商。
我正在按照以下方式进行操作。
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:01,625 错误 [[mvc-dispatcher]] Servlet.service() 用于 servlet mvc-dispatcher 抛出异常 com.sun.jersey.api.client.ClientHandlerException:Java 类型、net.sf.json.JSONObject 类和 MIME 媒体的消息体编写器 类型,application/json,未找到 在 com.sun.jersey.api.client.RequestWriter.writeRequestEntity(RequestWriter.java:288) 在 com.sun.jersey.client.urlconnection.URLConnectionClientHandler._invoke(URLConnectionClientHandler.java:204) 在 com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:147) 在 com.sun.jersey.api.client.Client.handle(Client.java:648) 在 com.sun.jersey.api.client.WebResource.handle(WebResource.java:670) 在 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) 在 com.nec.jp.pflow.unc.controller.EmployeeController.addCustomer(EmployeeController.java:29) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(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。
下面是代码sn-p。
ObjectMapper mapper = new ObjectMapper();
ClientResponse response = resource.path("rest").path("vtn").path("addEmplyee")
.type(MediaType.APPLICATION_JSON_TYPE).post(ClientResponse.class, mapper.writeValueAsString(employee));
【问题讨论】:
-
如果您找到了解决方案,您可以将其发布为答案并自行选择。否则,这个问题看起来没有答案。