使用 Retrofit 2.0 POST 方法获取请求正文内容

2024-04-04

我需要在执行之前获取请求正文并使用 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);

我使用上述方法遇到的问题:

  1. 请求正文仅在默认的 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方法仅返回元数据而不是请求发布数据。

请提供您宝贵的提示和解决方案来帮助我解决这个问题。我不知道该怎么做。在过去的两天里我完全被这个问题困扰了。如果我的问题太长,请原谅。欢迎你提出任何建议。如果我的要求不清楚,请告诉我。提前致谢。


我已经从这个链接开始工作了Retrofit2:修改OkHttp拦截器中的请求体 https://stackoverflow.com/questions/34791244/retrofit2-modifying-request-body-in-okhttp-interceptor

private String bodyToString(final RequestBody request) {
            try {
                final RequestBody copy = request;
                final Buffer buffer = new Buffer();
                if (copy != null)
                    copy.writeTo(buffer);
                else
                    return "";
                return buffer.readUtf8();
            } catch (final IOException e) {
                return "did not work";
            }
        }

我正在使用的改造依赖项是

 compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta3'
    compile 'com.squareup.okhttp3:okhttp:3.0.0-RC1'
    compile 'com.squareup.okhttp3:logging-interceptor:3.0.0-RC1'
    compile 'com.squareup.retrofit2:retrofit:2.0.0-beta3'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Retrofit 2.0 POST 方法获取请求正文内容 的相关文章

随机推荐