2014-09-15 3 views

ответ

4

, если вы хотите видеть только ответы для целей отладки, просто включите отладку в модификации и посмотрите журнал. Это что-то вроде:

restAdapter.setDebuggingEnabled(true); 

Если вам нужен доступ к прямой реакции в коде все время, вы должны делать это на уровне HTTPClient, как это в основном минуя цель модернизации

+0

Это то, что я искал. Я обновил фрагмент кода, чтобы использовать надлежащие методы для выхода из системы «Дооснащение». Все ваши ответы правильные, так что спасибо всем. –

1

Чтобы напечатать объект ответа сначала меняет тип объекта обратного вызова на общий тип объекта через Callback<Object> cb. Затем в своем обратном вызове вы можете просто зарегистрировать объект для печати форматированной версии Json на консоли.

@Override 
public void success(Object o, Response response) { 
    Log.i("Tag", "Login data " + o.toString()); 
} 

Чтобы напечатать объект запроса вы можете использовать любой Json библиотеки вы используете (здесь я использую Gson) сериализовать объект запроса к Json и войти, что консоль.

Log.i("Tag", "Request data " + new Gson().toJson(requestObject)); 
+0

Я получаю эту ошибку, поэтому она никогда не попадает в функцию успеха и не переходит в неисправную функцию. Есть предположения? com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: ожидается BEGIN_OBJECT, но BEGIN_ARRAY –

+0

Попробуйте использовать список объектов вместо – MrEngineer13

+0

Я пробовал, но все равно получаю сообщение об ошибке. См. Этот вопрос: http://stackoverflow.com/questions/25817604/retrofit-convert-array-of-objects-to-gson-error/25819168#25819168 –

1

Вам нужно получить ответ в строчном формате, а затем проанализировать данные с помощью gson. Чтобы получить ответ со строкой, вы можете использовать CustomStringConverter, расширив преобразователь retrofit.converter.Converter или просто получив входной поток от ответа на результат успеха.

public void success(Response r1, Response r2) { 

    IntputStream in = r1.getBody().in() 
     //convert this inputstream to string 
} 
1

Если вы хотите использовать полную мощность модернизированного и сохранить необработанный ввод для себя (например, чтобы сохранить его в упорном кэше), вы можете расширить конвертер, например,

RestAdapter restAdapter = new RestAdapter.Builder() 
    .setConverter(new GsonConverter(gson) { 
     @Override 
     public Object fromBody(TypedInput body, Type type) throws ConversionException { 
      try { 
       byte[] buffer = new byte[body.length()]; 
       body.in().read(buffer); 
       body.in().reset(); 
      } 
      catch (IOException e) { 
       throw new ConversionException(e); 
      } 
      return super.fromBody(body, type); 
     } 
    }) 
    ...build(); 
ResponseInterface ri = restAdapter.create(ResponseInterface.class); 
0

Вы также можете войти результат, как этот

mRestAdapter = new RestAdapter.Builder() 
      .setEndpoint(getBaseUrl()) 
      .setLogLevel(RestAdapter.LogLevel.FULL) //Log the result 
      .build();