700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Android Retrofit通过OkHttp设置Interceptor拦截器统一打印请求报文及返回报文

Android Retrofit通过OkHttp设置Interceptor拦截器统一打印请求报文及返回报文

时间:2021-09-23 07:59:29

相关推荐

Android Retrofit通过OkHttp设置Interceptor拦截器统一打印请求报文及返回报文

我们先定义一个打印报文的拦截器,继承Interceptor

public class LogInterceptor implements Interceptor {private static final String TAG = LogInterceptor.class.getSimpleName();@Overridepublic Response intercept(Chain chain) throws IOException {Charset UTF8 = Charset.forName("UTF-8");// 打印请求报文Request request = chain.request();RequestBody requestBody = request.body();String reqBody = null;if(requestBody != null) {Buffer buffer = new Buffer();requestBody.writeTo(buffer);Charset charset = UTF8;MediaType contentType = requestBody.contentType();if (contentType != null) {charset = contentType.charset(UTF8);}reqBody = buffer.readString(charset);}Log.d(TAG, String.format("发送请求\nmethod:%s\nurl:%s\nheaders: %s\nbody:%s",request.method(), request.url(), request.headers(), reqBody));// 打印返回报文// 先执行请求,才能够获取报文Response response = chain.proceed(request);ResponseBody responseBody = response.body();String respBody = null;if(responseBody != null) {BufferedSource source = responseBody.source();source.request(Long.MAX_VALUE);Buffer buffer = source.buffer();Charset charset = UTF8;MediaType contentType = responseBody.contentType();if (contentType != null) {try {charset = contentType.charset(UTF8);} catch (UnsupportedCharsetException e) {e.printStackTrace();}}respBody = buffer.clone().readString(charset);}Log.d(TAG, String.format("收到响应\n%s %s\n请求url:%s\n请求body:%s\n响应body:%s",response.code(), response.message(), response.request().url(), reqBody, respBody));return response;}}

然后通过OkHttp设置拦截器

private Retrofit getRetrofit() {OkHttpClient httpClient = new OkHttpClient.Builder().addInterceptor(new LogInterceptor()).build();return new Retrofit.Builder().client(httpClient).addConverterFactory(GsonConverterFactory.create()).addCallAdapterFactory(RxJava2CallAdapterFactory.create()).baseUrl(getBaseUrl()).build();}

打印出来的报文如下所示

06-01 14:36:35.223 16547-16593/com.him.hisapp D/HttpServiceImpl: 发送请求method:POSTurl::6666/api/YeYuanXinYiheaders: header1: headerValue1header2: headerValue2header3: headerValue3body:{"user_name":"yeyuanxinyi","age":"28","class":"3"}06-01 14:36:39.003 16547-16593/com.him.hisapp D/HttpServiceImpl: 收到响应200 OK请求url:http://110.86.9.67:8401/api/VipSelfCashRegister/GetSysUser请求body:{"customerCode":"VIP","passWord":"666666","username":"00088"}响应body:{"success":true,"message":null,"code":null,"data":{"user_name":"yeyuanxinyi","age":"28","class":"3"}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。