6
6
7
7
import androidx .annotation .NonNull ;
8
8
import okhttp3 .Interceptor ;
9
+ import okhttp3 .MediaType ;
9
10
import okhttp3 .Request ;
10
11
import okhttp3 .RequestBody ;
11
12
import okhttp3 .Response ;
24
25
*/
25
26
public class LogInterceptor implements Interceptor {
26
27
28
+ private static final String multipartType = "multipart" ;
27
29
private final static Charset UTF_8 = Charset .forName ("UTF-8" );
28
30
29
31
@ Override
30
32
public Response intercept (Chain chain ) throws IOException {
31
33
Request request = chain .request ();
32
- Timber .i (String . format ( "%1$s -> %2$s" ,request .method (),request .url () ));
34
+ Timber .i ("%1$s -> %2$s" ,request .method (),request .url ());
33
35
34
36
if (request .headers () != null && request .headers ().size () > 0 ){
35
37
Timber .d ("Headers:" + request .headers ());
36
38
}
37
39
38
- if ( request .body () != null ){
39
- RequestBody requestBody = request . body ();
40
- final Buffer buffer = new Buffer ();
41
- requestBody . writeTo ( buffer );
42
- if (isPlaintext ( buffer )){
43
- Timber .d ("RequestBody:" + buffer . readString ( getCharset ( requestBody , UTF_8 )) );
40
+ RequestBody requestBody = request .body ();
41
+ if ( requestBody != null ){
42
+ MediaType mediaType = requestBody . contentType ();
43
+ Timber . d ( "RequestContentType:" + mediaType );
44
+ if (mediaType != null && multipartType . equalsIgnoreCase ( mediaType . type () )){
45
+ Timber .d ("RequestBody:(form data " + requestBody . contentLength () + "-byte body omitted)" );
44
46
}else {
45
- Timber .d ("RequestContentType:" + requestBody .contentType ());
46
- Timber .d ("RequestBody:(binary " + requestBody .contentLength () + "-byte body omitted)" );
47
+ final Buffer buffer = new Buffer ();
48
+ requestBody .writeTo (buffer );
49
+ if (isPlaintext (buffer )){
50
+ Timber .d ("RequestBody:" + buffer .readString (getCharset (requestBody ,UTF_8 )));
51
+ }else {
52
+ Timber .d ("RequestBody:(binary " + requestBody .contentLength () + "-byte body omitted)" );
53
+ }
47
54
}
48
55
}
49
56
@@ -59,6 +66,8 @@ public Response intercept(Chain chain) throws IOException {
59
66
Response response = chain .proceed (chain .request ());
60
67
ResponseBody responseBody = response .body ();
61
68
if (responseBody != null ){
69
+ MediaType mediaType = responseBody .contentType ();
70
+ Timber .d ("ResponseContentType:" + mediaType );
62
71
BufferedSource source = responseBody .source ();
63
72
source .request (Long .MAX_VALUE ); // Buffer the entire body.
64
73
Buffer buffer = source .getBuffer ();
@@ -68,11 +77,15 @@ public Response intercept(Chain chain) throws IOException {
68
77
buffer .writeAll (gzippedResponseBody );
69
78
}
70
79
}
71
- if (isPlaintext (buffer )){
72
- Timber .d ("ResponseBody:" + buffer .clone ().readString (getCharset (responseBody ,UTF_8 )));
80
+
81
+ if (mediaType != null && multipartType .equalsIgnoreCase (mediaType .type ())){
82
+ Timber .d ("ResponseBody:(form data " + buffer .size () + "-byte body omitted)" );
73
83
}else {
74
- Timber .d ("ResponseContentType:" + responseBody .contentType ());
75
- Timber .d ("ResponseBody:(binary " + buffer .size () + "-byte body omitted)" );
84
+ if (isPlaintext (buffer )){
85
+ Timber .d ("ResponseBody:" + buffer .clone ().readString (getCharset (responseBody ,UTF_8 )));
86
+ }else {
87
+ Timber .d ("ResponseBody:(binary " + buffer .size () + "-byte body omitted)" );
88
+ }
76
89
}
77
90
}
78
91
return response ;
0 commit comments