我需要在执行之前获取请求正文并使用 Retrofit 2.0 执行一些逻辑操作enque
手术。但不幸的是,我无法从我的服务呼叫中获取帖子正文内容。目前,经过大量搜索后,我发现只有一种解决方案,例如logging
the request
我使用 Retrofit 2.0 发布这个方法 https://futurestud.io/blog/retrofit-2-log-requests-and-responses通过使用HttpLoggingInterceptor
with 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
or JSONObject
。即使我能够使用以下方式获得响应主体HttpLoggingInterceptor
,我的请求正文将始终在 Logcat 中显示,并带有“OkHttp”标签,即使在应用程序投入生产之后也是如此(因此这主要是一种释放 logcat 中的发布数据的方式)。
我的要求:
我需要获取请求正文String
or JSONObject
或任何方法,而不修改 Logcat 中的发布数据。
我尝试过的:
即使在之后我也尝试获取请求正文onResponse
from Response<T> response
,但尽管我无法完成它。请找到我用于此目的的代码,如下所示:
Gson gson = new Gson();
String responseString = gson.toJson(response.raw().request().body());
Note:上面转换后的请求体使用gson.toJson
方法仅返回元数据而不是请求发布数据。
请提供您宝贵的提示和解决方案来帮助我解决这个问题。我不知道该怎么做。在过去的两天里我完全被这个问题困扰了。如果我的问题太长,请原谅。欢迎你提出任何建议。如果我的要求不清楚,请告诉我。提前致谢。