2015-03-08 4 views
0

Я настроил сервис API остального, используя Джерси, который производит ответ json. Это код сервера:Использование пользовательского объекта для получения ответа json для Rest API

@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(); 
    } 
} 

При запуске сервера, я вижу, о/р, как ожидалось:

@Produces("application/json") Output: 
Number adding Output: 
{"Sum Value":9} 

Теперь я хочу создать класс клиента, чтобы получить ответ JSon в пользовательский объект, который я определил, AddNumResponseObject, но когда я делаю это:

AddNumResponseObject object 
     = webResource2.accept("application/json").get(AddNumResponseObject.class); 

I get this error: A message body reader for Java class com.crunchify.client.AddNumResponseObject, and Java type class com.crunchify.client.AddNumResponseObject, and MIME media type application/json was not found

Может кто-то пожалуйста, помогите мне?

Спасибо!

ответ

0

Вам следует добавить поставщика в проект, который поддерживает JSON для POJO (и наоборот). Теперь я делаю предположение, что вы используете Джерси 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); 

Для конфигурации сервера (при необходимости) или поддержки Jersey 2 см this post. Также см. here

Смежные вопросы