2015-10-21 2 views
0

У меня в настоящее время проблема, когда я не могу получить полный ответ на запрос на модификацию, только все, кроме как кажется.Android Retrofit 2 получить полный ответ тела

Мой ApiManager:

public class ApiManager { 

public interface AmbiApi { 

    @POST("users/register") 
    Call<User> registerUser(@Body User user); 
} 

private static final String API_URL = "http://api.staging.ambiapp.com/v1/"; 

private static final Retrofit RETROFIT = new Retrofit.Builder() 
     .baseUrl(API_URL) 
     .addConverterFactory(GsonConverterFactory.create()) 
     .build(); 

private static final AmbiApi AMBI_API = RETROFIT.create(AmbiApi.class); 

public static AmbiApi getApi() { 
    return AMBI_API; 
} 

Создание апи вызова:

Call<User> registerUserCall = ApiManager.getApi().registerUser(user); 
registerUserCall.enqueue(registerCallback); 

Callbacks:

@Override 
public void onResponse(Response<User> response, Retrofit retrofit) { 
    Log.e("LOG", "Retrofit Response: " + response.raw().toString()); 
} 

@Override 
public void onFailure(Throwable t) { 
    // 
} 

Теперь, когда текущий вызов только вывод:

Retrofit Response: Response{protocol=http/1.1, code=500, message=Internal Server Error, url=http://api.staging.ambiapp.com/v1/users/register} 

, и это потому, что я знаю, что что-то не так, но все, что происходит не так, включено в ответ, я просто не могу понять, как точно увидеть, что такое внутренняя ошибка сервера.

Любая помощь будет оценена

ответ

1
@Override 
public void onResponse(Response<User> response, Retrofit retrofit) { 

    if (!response.isSuccess()) { 
     try { 
      Log.e("LOG", "Retrofit Response: " + response.errorBody().string()); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

глупо меня

0

Я настоятельно рекомендую вам использовать OkHttpHttpLoggingInterceptor.

+0

Я не могу включить, что в моем проекте? просто получить не удалось устранить ошибку при попытке добавить 'compile 'com.squareup.okhttp: logging-interceptor: 2.5.0'' к моим зависимостям –

+0

на данный момент, он доступен только в версии 2.6.0-SNAPSHOT –

0

Это метод, который я использую для перехвата 2-х ошибок.

Call List<data> call=MyService.loadData(); 
    call.enqueue(new Callback<List<data>>() { 
      @Override 
      public void onResponse(Response<List<data>> response, Retrofit retrofit) { 
       if (response.isSuccess()) { 
        //Response success. Handle data here 
           } 
           else{ 
          //For getting error message 
        Log.d("Error message",response.response.raw().message()); 
          //For getting error code. Code is integer value like 200,404 etc 
        Log.d("Error code",String.valueOf(response.response.raw().code()));   
           } 
      } 


      @Override 
      public void onFailure(Throwable t) { 
       if (t instanceof IOException){ 
         //Add your code for displaying no network connection error 
          } 
      } 
     }); 
0

дооснащения 2

// create upload service client 
    APIInterface service = 
      ServiceGenerator.createService(APIInterface.class); 

Call<SubmitFormModel> call = service.upload(description, body, STATE_CD); 

call.enqueue(new Callback<SubmitFormModel>() { 
     @Override 
     public void onResponse(Call<SubmitFormModel> call, 
           Response<SubmitFormModel> response) { 
      Log.v("Upload", "success"); 

      if (mProgressDialog != null && mProgressDialog.isShowing()) 
       mProgressDialog.dismiss(); 

      System.out.println("response call " + call); 
      System.out.println("response Response " + response.body().toString()); 

      SubmitFormModel result = response.body(); 
      System.out.println("response message " + result.getResponseData().getMessage()); 

       /* Create an Intent that will start the next Activity. */ 
      Intent mainIntent = new Intent(CaptureImgUpload.this 
        , SuccessScreenActivity.class); 
      CaptureImgUpload.this.startActivity(mainIntent); 

     } 

Формат клиента для объектного кода

public class SubmitFormModel { 

private int statusCode; 
private String status; 
private ResponseData responseData; 

public String getStatus() { 
    return status; 
} 

public void setStatus(String status) { 
    this.status = status; 
} 

public int getStatusCode() { 
    return statusCode; 
} 

public void setStatusCode(int statusCode) { 
    this.statusCode = statusCode; 
} 

public ResponseData getResponseData() { 
    return responseData; 
} 

public void setResponseData(ResponseData responseData) { 
    this.responseData = responseData; 
} 

public class ResponseData { 

    private String message; 
    public Data data; 

    public String getMessage() { 
     return message; 
    } 

    public void setMessage(String message) { 
     this.message = message; 
    } 

    public Data getData() { 
     return data; 
    } 

    public void setData(Data data) { 
     this.data = data; 
    } 
} 

public class Data { 

    private int application_id; 

    public int getApplication_id() { 
     return application_id; 
    } 
    public void setApplication_id(int application_id) { 
     this.application_id = application_id; 
    } 
} 

}

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