Я не могу найти подходящие методы в Retrofit API для регистрации полных тел запросов / ответов. Я ожидал некоторой помощи в Profiler (но он предлагает только метаданные об ответе). Я пробовал установить уровень журнала в Builder, но мне это тоже не помогло:
RestAdapter adapter = (new RestAdapter.Builder()).
setEndpoint(baseUrl).
setRequestInterceptor(interceptor).
setProfiler(profiler).
setClient(client).
setExecutors(MyApplication.getWebServiceThreadPool()).
setLogLevel(LogLevel.FULL).
setLog(new RestAdapter.Log() {
@Override
public void log(String msg) {
Log.i(TAG, msg);
}
}).
build();
РЕДАКТИРОВАТЬ: этот код сейчас работает. Не знаю, почему раньше не работало. Возможно, потому что я использовал старую версию дооснащения.
FULL
это должно дать тело, но это не похоже.Ответы:
Использовал
setLogLevel(LogLevel.FULL).setLog(new AndroidLog("YOUR_LOG_TAG"))
, мне помогло.ОБНОВИТЬ.
Вы также можете попробовать использовать для отладки в
retrofit.client.Response
качестве модели ответаисточник
AndroidLog
, что это за класс?response body
, хотя в документе говорится, что выLogLevel.FULL
должны предоставить вамresponse body
.Модернизация 2.0 :
ОБНОВЛЕНИЕ: @ by Marcus Pöhls
Вход в систему Retrofit 2
Retrofit 2 полностью полагается на OkHttp для любых сетевых операций. Поскольку OkHttp является одноранговой зависимостью Retrofit 2, вам не нужно будет добавлять дополнительную зависимость после выпуска Retrofit 2 в качестве стабильного выпуска.
OkHttp 2.6.0 поставляется с перехватчиком журналов в качестве внутренней зависимости, и вы можете напрямую использовать его для своего клиента Retrofit. Retrofit 2.0.0-beta2 по-прежнему использует OkHttp 2.5.0. В будущих выпусках будет увеличена зависимость от более высоких версий OkHttp. Вот почему вам нужно вручную импортировать перехватчик журналов. Добавьте следующую строку в свой импорт gradle в файле build.gradle, чтобы получить зависимость перехватчика ведения журнала.
Вы также можете посетить страницу Square GitHub об этом перехватчике.
Добавление регистрации в дооснащение 2
При разработке приложения и в целях отладки хорошо иметь интегрированную функцию журнала для отображения информации о запросах и ответах. Поскольку ведение журнала по умолчанию больше не интегрировано в Retrofit 2, нам нужно добавить перехватчик журнала для OkHttp. К счастью, OkHttp уже поставляется с этим перехватчиком, и вам нужно только активировать его для своего OkHttpClient.
Мы рекомендуем добавить запись в журнал в качестве последнего перехватчика, потому что это также будет регистрировать информацию, которую вы добавили с предыдущими перехватчиками в свой запрос.
Уровни журнала
Запись слишком большого количества информации взорвет ваш монитор Android, поэтому перехватчик журналов OkHttp имеет четыре уровня журнала: NONE, BASIC, HEADERS, BODY. Мы проведем вас через каждый уровень журнала и опишем их результат.
дополнительную информацию, пожалуйста, посетите: Retrofit 2 - Log Requests and Responses
СТАРЫЙ ОТВЕТ:
больше нет входа в Retrofit 2. Команда разработчиков удалила функцию ведения журнала. Честно говоря, функция регистрации в любом случае не была такой надежной. Джейк Уортон прямо заявил, что зарегистрированные сообщения или объекты являются предполагаемыми значениями, и их истинность не может быть подтверждена. Фактический запрос, который поступает на сервер, может иметь измененное тело запроса или что-то еще.
Несмотря на то, что по умолчанию интегрированное ведение журнала отсутствует, вы можете использовать любое средство ведения журнала Java и использовать его в настраиваемом перехватчике OkHttp.
дополнительную информацию о Retrofit 2 см. в разделе Retrofit - Начало работы и создание клиента Android.
источник
Обновление для Retrofit 2.0.0-beta3
Теперь вам нужно использовать okhttp3 со строителем. Также не подойдет старый перехватчик. Этот ответ адаптирован для Android.
Вот вам быстрая копия и вставка с новым материалом.
1. Измените свой файл gradle на
2. Проверьте этот пример кода:
с новым импортом. Вы можете удалить Rx, если вы его не используете, а также удалить то, что вы не используете.
бонус
Я знаю, что это оффтоп, но мне это нравится.
Если есть код ошибки http: unauthorized , вот перехватчик. Я использую eventbus для передачи события.
код взять из https://github.com/AndreiD/UltimateAndroidTemplateRx (мой проект).
источник
Похоже, что нет способа сделать базовый + body, но вы можете использовать FULL и фильтровать заголовки, которые вам не нужны.
Похоже, что при переопределении журнала к телу добавляется префикс, похожий на
так что должно быть легко регистрировать базовый + тело, настраивая настраиваемый фильтр. Я использую черный список, но белый список также может быть использован в зависимости от ваших потребностей.
источник
приведенный ниже код работает как с заголовком, так и без заголовка для печати запроса и ответа журнала. Примечание: просто прокомментируйте строку .addHeader (), если не используете заголовок.
источник
Надеюсь, этот код поможет вам в логировании.
вам просто нужно добавить перехватчик в свой файл
Build.Gradle
then makeRetrofitClient
.Первый шаг
Добавьте эту строку в свой
build.gradle
Второй шаг
Сделайте своего клиента для модернизации
призвание
источник
Если вы используете Retrofit2 и okhttp3, вам нужно знать, что Interceptor работает по очереди. Поэтому добавьте loggingInterceptor в конце после других ваших перехватчиков:
источник
ZoomX - Android Logger Interceptor - отличный перехватчик, который поможет вам решить вашу проблему.
источник
Для студии android до версии 3.0 (с использованием android motinor)
https://futurestud.io/tutorials/retrofit-2-log-requests-and-responses
https://www.youtube.com/watch?v=vazLpzE5y9M
А для студии Android версии 3.0 и выше (использование профилировщика Android в качестве монитора Android заменяется профилировщиком Android)
https://futurestud.io/tutorials/retrofit-2-analyze-network-traffic-with-android-studio-profiler
источник