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

前端之家收集整理的这篇文章主要介绍了android – 使用Retrofit 2.0 POST方法获取请求正文内容前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要获得一个请求体,并在进行排队操作之前对Retrofit 2.0执行一些逻辑操作.但不幸的是,我无法从我的服务电话中获取帖子内容.目前搜索很多,我发现只有一个解决方案,如使用HttpLoggingInterceptor和OkHttpClient登录使用Retrofit 2.0从 this method发布的请求.我正在使用以下代码在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”(所以主要是这样一种缓解在logcat中发布数据).

我的要求:

我需要获取请求正文为String或JSONObject或任何方法,而不会修改Logcat中的post数据.

我试过的

即使在Response< T>的onResponse之后,我也试图获取请求主体回应,但尽管我无法做到这一点.请查看我为此目的使用的代码如下:

Gson gson = new Gson();
 String responseString =  gson.toJson(response.raw().request().body());

注意:上述转换的请求体使用gson.toJson方法仅返回元数据而不是请求发布数据.

请通过提供宝贵的技巧和解决方案帮助我.我不知道该怎么做过去两天我完全陷入僵局.如果我的问题太冗长,请原谅您的意见总是受到欢迎.如果我的要求不明确,请告诉我提前致谢.

解决方法

我已经从这个链接工作了
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'

猜你在找的Android相关文章