我正在使用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 MVC-dispatcher的Servlet.service()抛出异常com . sun . jersey . API . client . client handler异常:在com . sun . jersey . client . URL connection . urlconnection的com . sun . jersey . API . client . request writer . writerequestentity(request writer . Java:288)中找不到Java类型类net . SF . JSON . JSON . JSON object和MIME媒体类型application/json的消息正文编写器
但是如果我把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));
添加一个. toString()对我有用:
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.toString());
只是从上面的问题中复制解决方案,以防有人在寻找答案。
使用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));
更好的方法是告诉泽西客户端
它可以使用杰克逊
进行序列化:https://stackoverflow.com/a/2580315/516188
粘贴设置:
ClientConfig cc = new DefaultClientConfig();
cc.getClasses().add(JacksonJsonProvider.class);
Client clientWithJacksonSerializer = Client.create(cc);
JacksonJson提供者
在jackson-jaxrs-json-的
包中。
我正在使用Jersey构建REST服务,并希望返回一个< code >集合 但我的尝试失败了,但有以下例外: javax.ws.rs.WebApplicationException:com.sun.jersey.api。MessageException:Java类Java.util的消息体编写器。ArrayList和Java类型类Java.util。找不到ArrayList和MIME媒体类型tex
问题内容: 在尝试找出我的问题之后,我终于决定问您如何解决我的问题。我见过不同的人有相同的问题,我尝试了所有建议他们做的事情,但没有任何帮助解决我的问题。所以基本上我有一个使用Jersey进行构建的RESTful服务。对于我的客户,我想返回JSON格式的对象。我通读了不同的教程,并决定使用jersey- json-1.8库是有意义的。我像往常一样将所有内容添加到我的项目中,并尝试运行它,但是每次调
问题内容: 我正在测试RESTful服务,当我执行RESTful服务时,尽管我的类路径(WEB-INF / lib)中包含以下jar,但是却遇到异常,但我没有使用Maven,而我的JDK版本是1.5。有关此问题的其他问题无助于解决问题。 程式码片段 web.xml 罐子清单 异常堆栈 我该如何解决这个问题? 问题答案: 确保您的项目中没有多个Jersey版本。在您提供的列表中,有3个不同版本(1.
问题内容: 我正在使用Jersey来构建REST服务,并希望返回XML。 但是我的尝试失败,但有以下异常: javax.ws.rs.WebApplicationException:com.sun.jersey.api.MessageException:Java类java.util.ArrayList和Java类型类java.util.ArrayList和MIME媒体类型text / xml的消息正
我正在使用一个以AngularJS为客户端和泽西Rest WebService的应用程序。我能够通过使用angularJS$http.get()成功获取数据,但我很难将数据发布到服务器。我收到以下异常。 com.sun.jersey.spi.container.ContainerRequestgetEntity SEVERE:未找到Java类型、类dto.BookObject和MIME媒体类型(a
我在使用JAX-RS服务作为JSON时遇到了一些问题。