2016-07-11 5 views
0

Я использую Retrofit lib для получения объектов из службы поддержки JSON Api. Я реализовал простой запрос и эхо в PHP.Retrofit manage Список объектов нет объектов JSON

Это JSON я обычно использую для создания объектов в моем Android APP:

[ 
    { 
     "event_id":"1", 
     "event_name":"Lungo il tevere", 
     "event_image_url":"https:\/\/www.dayroma.it\/wp-content\/uploads\/2016\/06\/event_fb-9400.jpg", 
     "event_content":"Lungo il Tevere Roma 2016, bancarelle sulle banchine del Tevere", 
     "event_owner":"1", 
     "event_start_time":"22:00:00", 
     "event_end_time":"03:00:00", 
     "event_all_day":"0", 
     "event_start_date":"2016-07-05", 
     "event_end_date":"2016-07-06", 
     "location_name":"Lungotevere", 
     "location_owner":"1", 
     "location_address":"Piazza Navona 2", 
     "location_town":"Roma", 
     "location_state":null, 
     "location_postcode":null, 
     "location_region":null, 
     "location_country":"IT", 
     "location_latitude":"41.897785", 
     "location_longitude":"12.472971" 
    }, 
    { 
     "event_id":"3", 
     "event_name":"Black Mountain + Soviet Soviet", 
     "event_image_url":"https:\/\/www.dayroma.it\/wp-content\/uploads\/2016\/04\/timthumb.jpeg", 
     "event_content":"Affrontare la psichedelia granitica dei Black Mountain", 
     "event_owner":"1", 
     "event_start_time":"20:00:00", 
     "event_end_time":"00:00:00", 
     "event_all_day":"0", 
     "event_start_date":"2016-07-05", 
     "event_end_date":"2016-07-06", 
     "location_name":"Villa Ada", 
     "location_owner":"1", 
     "location_address":"Villa Ada ", 
     "location_town":"Roma", 
     "location_state":null, 
     "location_postcode":null, 
     "location_region":null, 
     "location_country":"IT", 
     "location_latitude":"41.932831", 
     "location_longitude":"12.501247" 
    }, 
    { 
     "event_id":"7", 
     "event_name":"test 4", 
     "event_image_url":"", 
     "event_content":"05test 4", 
     "event_owner":"1", 
     "event_start_time":"01:00:00", 
     "event_end_time":"05:00:00", 
     "event_all_day":"0", 
     "event_start_date":"2016-07-06", 
     "event_end_date":"2016-07-06", 
     "location_name":"Villa Ada", 
     "location_owner":"1", 
     "location_address":"Villa Ada ", 
     "location_town":"Roma", 
     "location_state":null, 
     "location_postcode":null, 
     "location_region":null, 
     "location_country":"IT", 
     "location_latitude":"41.932831", 
     "location_longitude":"12.501247" 
    } 
] 

мне нужно управлять ошибок и JSON, как это, если список объектов пуст:

[ 
    { 
     "status":"0", 
     "message":"No Event" 
    } 
] 

Для в реализации я использовал это https://futurestud.io/blog/retrofit-getting-started-and-android-client

На данный момент, если нет событий (объектная модель), я извлекаю код ответа 200 и на json. Как я могу управлять этим сценарием? Я должен изменить Api Rest Response, чтобы дать мне 404 или 400, а затем управлять ошибкой?

ответ

0

вместо того, чтобы использовать модель использования объекта Response тело в методе

Пример в модифицированной версии 2.x

public interface RequestService{ 
    @GET("https://stackoverflow.com/users/{user}") 
    Call<ResponseBody> getLogin(@Field("userId") String, @Field("password") String); 
} 

В вашей деятельности

RequestService service = retrofit.create(RequestService.class); 
Call<ResponseBody> result = service.getLogin(username,password); 
result.enqueue(new Callback<ResponseBody>() { 
@Override 
public void onResponse(Response<ResponseBody> response) { 
    try { 
     System.out.println(response.body().string());//Parse your json here 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

@Override 
public void onFailure(Throwable t) { 
    e.printStackTrace(); 
} 
}); 
+0

К сожалению SaravInfern, я делаю что путь, но когда я получаю сообщение json «сообщение»: функция «No Event» onResponse в порядке, и я получаю список событий только с одним объектом со всем полем null ... Все, потому что код ответа 200, даже если нет событий ... Я пытался чтобы изменить код ответа, но ничего ... Я использую json api plugin wordpress и настраиваемый контроллер ... Знаете ли вы, как я могу создать пользовательский апи-отдых? – dayroma

+0

Я не могу понять, пожалуйста, будь ясным, в чем проблема, с которой вы сталкиваетесь? вы отлаживали звонок с точкой останова ?? – SaravInfern

+0

Если я получаю json с «Нет событий», в обратном вызове onReponse создается список событий с одним элементом со всем нулевым значением поля, это вызывает точку останова nullPoint. Мне нужно переключить ответ 200 в onResponse, если json заполнен элементами или нет, в обоих случаях мой api rest получает ответ 200: если есть элементы, arraylist объектов заполняется коррелятом, если нет, то у arraylist есть только элемент с null поле, это очень расстраивает. – dayroma

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