У меня есть требование получить тело запроса и выполнить некоторые логические операции с Retrofit 2.0 перед выполнением операции enque
. Но, к сожалению, я не могу получить содержание тела сообщения из моего служебного вызова. В настоящее время после многого поиска я нашел только одно решение, подобное logging
request
, которое я отправляю с помощью Retrofit 2.0 из этого метода с помощью HttpLoggingInterceptor
с OkHttpClient
. Я использую следующий код для регистрации тела запроса в Android Logcat:
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
logging.setLevel(Level.BODY);
OkHttpClient httpClient = new OkHttpClient();
httpClient.interceptors().add(logging);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(baseURL)
.addConverterFactory(GsonConverterFactory.create())
.build();
return retrofit.create(apiClass);
Проблема: я сталкиваюсь с указанным выше способом:
- Тело запроса просматривается только по умолчанию для Android Logcat, например
02-04 01:35:59.235 5007-5035/com.example.retrofitdemo D/OkHttp:{"nameValuePairs":{"id":"1","name":"chandru","type":"user"}}
Но вышеупомянутый метод возвращает только тело ответа в logcat, я не могу получить его как String
или JSONObject
. Несмотря на то, что если я смогу получить тело ответа с помощью HttpLoggingInterceptor
, мое тело запроса будет отображаться в Logcat с тегом "OkHttp" все время даже после того, как приложение войдет в производство (так что в первую очередь это ведет к тому, освобождение данных сообщения в логарифме).
Мои требования:
Мне нужно получить тело запроса как String
или JSONObject
или любой другой метод без оскорбления почтовых данных в Logcat.
Что я пробовал:
Я попытался получить тело запроса даже после onResponse
из Response<T> response
, но, хотя я не смог сделать это возможным. Пожалуйста, найдите код, который я использую для этой цели, следующим образом:
Gson gson = new Gson();
String responseString = gson.toJson(response.raw().request().body());
Примечание. Вышеуказанный преобразованный тело запроса с использованием метода gson.toJson
возвращает только метаданные, а не данные сообщения запроса.
Просьба помочь мне в этом, предоставив ценные советы и решения. Я не знаю, как это сделать. Я полностью застрял с этим в течение последних двух дней. Пожалуйста, простите, если мой вопрос слишком длинный. Ваши комментарии всегда приветствуются. Дайте мне знать, если мои требования не ясны. Спасибо заранее.