springBoot 之HttpLoggingInterceptor消息拦截器

为什么要用消息拦截器?

因为有时候接口不同在排错的时候 需要先从接口的响应中做分析。利用了消息拦截器可以清楚的看到接口返回的所有内容。不需要重新使用fildder等抓包工具来做分析

1、添加依赖
<dependency>
		<groupId>com.squareup.okhttp3</groupId>
		<artifactId>okhttp</artifactId>
		<version>3.9.1</version>
	</dependency>
		<dependency>
			<groupId>com.squareup.okhttp3</groupId>
			<artifactId>logging-interceptor</artifactId>
			<version>3.4.1</version>
		</dependency>
		```
###### 2.在合适的位置初始化(这里放在了构造,因为是单例,响应的拦截器也只new一次)
```java
private HttpMethod() {
       HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {
            @Override
            public void log(String message) {
                try {
                    String text = URLDecoder.decode(message, "utf-8");
                    Log.e("OKHttp-----", text);
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                    Log.e("OKHttp-----", message);
                }
            }
        });
        //这里可以builder(). 添加更多的内容 具体看需求
        mClient = new OkHttpClient.Builder().addInterceptor(interceptor).build();
        //这行必须加 不然默认不打印
        interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
    }
3.在retrofit中设置httpclient
Retrofit retrofit = new Retrofit.Builder()
                        .baseUrl(BASE_URL)
                        .addConverterFactory(GsonConverterFactory.create())
                        .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                        //添加HttpClient
                        .client(mClient)
                        .build();
                mApiService = retrofit.create(ApiService.class);

setlevel用来设置日志打印的级别,共包括了四个级别:NONE,BASIC,HEADER,BODY
BASEIC:请求/响应行
HEADER:请求/响应行 + 头
BODY:请求/响应航 + 头 + 体

以下是BODY级别的 打印的日志如下
springBoot 之HttpLoggingInterceptor消息拦截器_第1张图片
详见 原文:https://www.jianshu.com/p/1463bc223cd8

你可能感兴趣的:(消息拦截器)