使用Picasso加载图片并拿到request和response的全部信息

这个是项目中遇到的一点问题,本来只需要加载图片即可,没想到我们后台顺带将其他的参数放在header里面返回,是不是感觉有些小坑,为了拿到参数,于是报着试探的心态搜搜有没有人遇到类似的问题,在Picasso 的issue找到类似的,但api是很早之前的,已经过时,本文就当笔记记录下,如果恰巧帮助你解决了问题,可以随手点个赞,直接上代码:

 OkHttpClient picassoClient = new OkHttpClient.Builder()
                .addInterceptor(new Interceptor() {
                    @Override
                    public Response intercept(Chain chain) throws IOException {
                        Request request = chain.request();

                        long t1 = System.nanoTime();
                        Logger.i(String.format("Sending request %s on %s%n%s",
                                request.url(), chain.connection(), request.headers()));

                        Response response = chain.proceed(request);
                   
                        long t2 = System.nanoTime();
                        Logger.i(String.format("Received response for %s in %.1fms%n%s",
                                response.request().url(), (t2 - t1) / 1e6d, response.headers()));
                        Logger.i("status code:" + response.code());
                        return response;
                    }
                })
                .build();
        Picasso picasso = new Picasso.Builder(getActivity())
                .downloader(new OkHttp3Downloader(picassoClient))
                .build();
        picasso.load(url)
                .skipMemoryCache()
                .into(mImage);

之前我习惯了简单的写法

Picasso.with(context).load(url).into(mImage);

Picasso可以自定义downloader,Picasso内部已经定义了OkHttpDownloader,但这个不支持最新的OkHttp版本,想想不能因为这个降低OkHttp的版本,就google了下 JakeWharton大神早就预知了这个https://github.com/JakeWharton/picasso2-okhttp3-downloader,放上去就刚好完美,利用OkHttp的拦截器,可以拿到拿到request和response的全部信息了,如果读过okhttp的朋友可能眼熟上面的代码,对,就是日志拦截器。

    原文作者:dongjunkun
    原文地址: https://www.jianshu.com/p/10f27e49a106
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞