Android OkHttpClient 日志打印

OkHttpClient 打印请求日志

网上搜索打印okhttp日志的文章,几乎是一样的答案,用HttpLoggingInterceptor,但是打印排版不理想,多请求时打印混乱,所以看了源码后决定自己写一个排版容易阅读的日志打印

com.blankj:utilcodex

打印日志用了github上很火的框架utilcodex中LogUtils,优点是可以传入多参数打印,懒人必备,打印效果如下图在这里插入图片描述
话不多说上代码

code

public static class RequestInterceptor implements Interceptor {

        @NotNull
        @Override
        public Response intercept(@NotNull Chain chain) throws IOException {
            Request request = addRequestHeader(chain.request());
            String requestBody = getRequestBody(request);
            Response response = chain.proceed(request);
            String responseBody = getResponseBody(response);
            if (TextUtils.isEmpty(responseBody))
                return response;
            else {
                LogUtils.iTag(HttpParams.HTTP_TAG, request.method(),
                        request.url(), request.headers(), requestBody, responseBody);
                return response.newBuilder()
                        .body(ResponseBody.create(responseBody, HttpConfig.JSON))
                        .build();
            }
        }

        private String getRequestBody(Request request) throws IOException {
            RequestBody requestBody = request.body();
            if (requestBody != null) {
                Buffer buffer = new Buffer();
                requestBody.writeTo(buffer);
                return buffer.readString(Charset.defaultCharset());
            }
            return null;
        }

        private String getResponseBody(Response response) throws IOException {
            ResponseBody responseBody = response.body();
            if (responseBody != null)
                return responseBody.string();
            return null;
        }

        private Request addRequestHeader(Request request) {
            String token = SharedPreferencesHelper.getCacheObject(App.getContext(),
                    HttpParams.APP_TOKEN, "", String.class);
            Request.Builder builder = request.newBuilder()
                    .addHeader(HttpParams.CONTENT_TYPE, HttpParams.APPLICATION_JSON)
                    .addHeader(HttpParams.ACCEPT, HttpParams.APPLICATION_JSON)
                    .addHeader(HttpParams.PLATFORM, String.format("%s %s",
                            DeviceUtils.getManufacturer(), DeviceUtils.getModel()));
            if (!TextUtils.isEmpty(token))
                builder.addHeader(HttpParams.APP_TOKEN, token);
            return builder.build();
        }

    }

关键点

使用OkHttpClient.Builder().addInterceptor(new RequestInterceptor())即可
addRequestHeader为设置请求头部基本参数
getRequestBody获取头部body参数
getResponseBody获取请求返回body参数,调用 responseBody.string()后需要build新response,原response会失效

Bye

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android OkHttp是一个用于在Android应用程序中进行网络请求的开源库。它可以用来发送HTTP请求,接收HTTP响应和处理HTTP消息体。在应用程序的主界面中,OkHttpClient可以被用来执行各种网络操作,比如获取数据、上传文件、下载资源等等。 在主界面中使用OkHttpClient,首先需要创建一个OkHttpClient实例,可以在应用程序的初始化阶段进行。接着,可以使用OkHttpClient实例来创建一个Request对象,包括设置请求的URL、请求方法、请求参数等。然后,可以通过OkHttpClient来发送这个Request对象,并且获取Response对象作为响应。 在主界面中可以将OkHttpClient用于各种网络请求,比如获取服务器端的数据来展示在界面上,或者上传用户输入的数据到服务器端进行处理。另外,OkHttpClient还支持异步请求和同步请求,可以根据具体需求来选择使用哪种方式。 同时,OkHttpClient还提供了丰富的配置选项,比如设置连接超时时间、设置读取超时时间、设置拦截器等等,可以根据具体的需求来对网络请求进行定制。 综上所述,Android OkHttp可以在应用程序的主界面中被广泛应用,帮助开发者完成各种网络请求操作,并且提供了丰富的配置选项,让开发者可以根据需求进行定制。因此,在Android应用程序的主界面中,OkHttpClient是一个非常有用的工具,可以帮助开发者完成复杂的网络操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值