我已经使用Jersey设置了一个休息API服务,它产生了一个json响应。这是服务器代码:
@Path("/addNumservice")
public class AddNumService {
@GET
@Produces("application/json")
public Response addNum() throws JSONException {
JSONObject jsonObject = new JSONObject();
int x = 5, y = 4;
int z = x + y;
jsonObject.put("Sum Value", z);
String result = "@Produces(\"application/json\") Output: \n\nNumber adding Output: \n\n" + jsonObject;
return Response.status(200).entity(result).build();
}
}
当我运行服务器时,我看到了预期的o / p:
@Produces("application/json") Output:
Number adding Output:
{"Sum Value":9}
现在我想设置一个客户端类来接收我定义的自定义对象AddNumResponseObject
中的json响应,但是当我这样做时:
AddNumResponseObject object
= webResource2.accept("application/json").get(AddNumResponseObject.class);
我收到此错误:Java类com.crunchify.client.AddNumResponseObject和Java类型类com.crunchify.client.AddNumResponseObject的消息正文阅读器,以及未找到MIME媒体类型application / json
有人可以帮帮我吗?
谢谢!
答案 0 :(得分:0)
您应该向项目中添加一个支持JSON到POJO的提供程序(反之亦然)。现在我在这里假设您正在使用Jersey 1(由名称webResource2
推断)。在这种情况下,您应该添加此依赖项
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>${jersey-version}</version>
</dependency>
然后将其注册到客户端
ClientConfig config = new DefaultClientConfig();
//config.getClasses().add(JacksonJsonProvider.class);
config.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING,
Boolean.TRUE);
Client c = Client.create(config);