Android Retrofit2 0 查看log和JSON字符串(HttpLoggingInterceptor)

Posted skiwnchhw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android Retrofit2 0 查看log和JSON字符串(HttpLoggingInterceptor)相关的知识,希望对你有一定的参考价值。

Retrofit2.0 怎么打印请求到的json字符串和查看log呢?
关键类:HttpLoggingInterceptor
关键代码:

HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
logging.setLevel(HttpLoggingInterceptor.Level.BODY);
httpClient = new OkHttpClient.Builder().addInterceptor(logging).build();
  • 1
  • 2
  • 3

详细代码:

public static Retrofit initRetrofit(){
       OkHttpClient httpClient = new OkHttpClient();
       if (BuildConfig.DEBUG) {
            HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
logging.setLevel(HttpLoggingInterceptor.Level.BODY);
httpClient = new OkHttpClient.Builder().addInterceptor(logging).build();
        }
        Gson gson = new GsonBuilder()
                .setDateFormat("yyyy-MM-dd‘T‘HH:mm:ssZ")
                .create();//使用 gson coverter,统一日期请求格式
        return new Retrofit.Builder()
                .baseUrl(BaseUtil.getGlivecApiUrl())
                .addConverterFactory(GsonConverterFactory.create(gson))
                .client(httpClient)
                .build();
     }

    /**
     * 创建 RetrofitManage 服务
     *
     * @return ApiService
     */
    public static ApiService createApiService() {
        return initRetrofit().create(ApiService.class);
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

.client(httpClient)属性切莫忘记配置。

retrofit:2.0.0-beta4的依赖:

compile ‘com.squareup.retrofit2:retrofit:2.0.0-beta4‘ // retrofit
compile ‘com.google.code.gson:gson:2.5‘ // gson
compile ‘com.squareup.retrofit2:converter-gson:2.0.0-beta4‘ 
compile ‘com.squareup.retrofit2:adapter-rxjava:2.0.0-beta4‘ 
compile ‘com.squareup.okhttp3:logging-interceptor:3.1.2‘
compile ‘com.squareup.okhttp3:okhttp:3.1.2‘
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

也可以这么写:

public class RxService {
    private static final String BASETESTURL = "http://apis.baidu.com/showapi_open_bus/";
    private static OkHttpClient okHttpClient = new OkHttpClient.Builder().addInterceptor
            (new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY)).build();
    private static Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(BASETESTURL)
            .client(okHttpClient)
            .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
            .addConverterFactory(GsonConverterFactory.create())
            .build();

    private RxService() {
        //construct

    }

    public static <T> T createApi(Class<T> clazz) {

        return retrofit.create(clazz);
    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net

以上是关于Android Retrofit2 0 查看log和JSON字符串(HttpLoggingInterceptor)的主要内容,如果未能解决你的问题,请参考以下文章

Retrofit2.0 添加log拦截公共参数

Retrofit2.0 android.os.NetworkOnMainThreadException解决方法

Android 网络框架 Retrofit2.0介绍使用和封装

Android 初探Retrofit2.0.1(最新版)

无法在HttpLoggingInterceptor Retrofit2.0上解析setLevel

Android 基于ijkplayer+Rxjava+Rxandroid+Retrofit2.0+MVP+Material Design的android万能播放器aaa