2014-12-09 2 views
0

Я создал приложение для использования REST api, разработанное мной. Клиент Android написан с помощью библиотеки retrofit.Retrofit возвращает null сообщение об ошибке со статусом 400

там я создал интерфейс, как ObjectIFaceAsync

public interface ObjectIFaceAsync { 
@POST("/") 
public void addArea(
     @Body Area area, 
     Callback<JsonElement> data 
); 
} 

я реализовал ее в кнопку мыши

Area pojoArea = new Area(); 
pojoArea.setArea(area.getText().toString()); 
pojoArea.setDistrict(district.getText().toString()); 
pojoArea.setProvince(province.getText().toString()); 
pojoArea.setAreaType(areaType.getSelectedItem().toString()); 
RestAdapter restAdapter = new RestAdapter.Builder() 
    .setEndpoint(URLs.ENDPOINT + "/restaddarea") 
    .build(); 
ObjectIFaceAsync objectIFaceAsync = restAdapter.create(ObjectIFaceAsync.class); 

try { 
    objectIFaceAsync.addArea(
     pojoArea, new Callback<JsonElement>() { 
      @Override 
      public void success(JsonElement jsonElement,retrofit.client.Response response) { 
       if (jsonElement.getAsJsonObject() 
        .get("status").getAsString().equals("s")) { 
        //show a message 
       } else { 
        //show another message 
       } 
      } 

      @Override 
      public void failure(RetrofitError retrofitError) { 
       //show a failure message 
       } 
      } 
      ); 
    } catch (Exception e) { 
    } 

Я использовал ту же самую конечную точку и послал запрос GET, не имеющий JSON @Body. Он работает нормально. Здесь я всегда получаю сообщение об ошибке. означает, что он всегда запускает ошибку . Я получил отображается

retrofitError.getMessage(); 

и

retrofitError.getResponse().getStatuse(); 

Они показывают нуль и соответственно.

Может кто-то сказать, что я должен сделать, чтобы исправить это. или что я сделал неправильно здесь.

спасибо.

+0

.setLogLevel (RestAdapter.LogLevel.FULL) .setLog (новый AndroidLog («your_application»)), это поможет вам отладить вывод –

+0

@PramodYadav Я сделал что-то правильно? , потому что я не уверен, пропустил ли я какой-либо шаг. – ddarz4u

+0

Распечатайте стек из RetrofitError. Может быть, в RetrofitError нет возможности вбрасывать, но из конечной точки возвращается только код состояния. –

ответ

0

Использование

retrofitError.getBody() 

, чтобы получить строку или

retrofitError.getBodyAs(MyError.class) 

если вы хотите отобразить JSON ошибки объекта

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