android–Retrofit 2– 是否有可能获得我发送和接收的JSON的大小?

android–Retrofit 2– 是否有可能获得我发送和接收的JSON的大小?,第1张

概述我需要在我的Android应用程序上构建一个流量监视器,我需要存储我通过改造发送接收的所有json的大小.使用日志我可以看到它的实际大小,但我没有找到获取此信息的方法,所以我可以保存它.我无法获得response.raw,因为它已被解析为我的类.有没有办法实现这一目标?编辑:标记的vadkou答

我需要在我的Android应用程序上构建一个流量监视器,我需要存储我通过改造发送和接收的所有Json的大小.使用日志我可以看到它的实际大小,但我没有找到获取此信息的方法,所以我可以保存它.我无法获得response.raw,因为它已被解析为我的类.有没有办法实现这一目标?

编辑:标记的vadkou答案是最好的.

我没有创建一个新的拦截器,而是传递了lamda表达式:

 httpClIEnt.addInterceptor( chain -> {        okhttp3.Request request = chain.request();        okhttp3.Response response = chain.proceed(request);        if(request.body()!=null) {            long requestLength = request.body().contentLength();            Log.e("SERVICE GENERATOR", " CONTENT LENGTH" + requestLength);        }        long responseLength = response.body().contentLength();        Log.e("SERVICE GENERATOR", " RESPONSE LENGTH" + responseLength);        return response;    });

解决方法:

Retrofit 2在内部使用Okhttp,你可以配置Okhttp,而不必像VaIDen的回答那样通过在构建适配器时添加自定义拦截器来获取原始http响应,如下所示:

private Retrofit createRetrofit() {       return new Retrofit.Builder()            .baseUrl(END_POINT)       //     .addConverterFactory(...)       //     .addCallAdapterFactory(...)            .clIEnt(createClIEnt())            .build();}private OkhttpClIEnt createClIEnt() {        OkhttpClIEnt.Builder okhttpClIEntBuilder = new OkhttpClIEnt.Builder();        okhttpClIEntBuilder.addInterceptor(createYourInterceptor());        return okhttpClIEntBuilder.build();}

Interceptor接口允许您为每个请求访问请求体.

@OverrIDepublic Response intercept(Chain chain) throws IOException {        Request request = chain.request();            // do what you want with request.body().contentLength();        return chain.proceed(request);}
总结

以上是内存溢出为你收集整理的android – Retrofit 2 – 是否有可能获得我发送和接收的JSON的大小?全部内容,希望文章能够帮你解决android – Retrofit 2 – 是否有可能获得我发送和接收的JSON的大小?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1113730.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存