如何使用 Glide 和 OkHttp 获取 http 响应 headers

How to get http response headers using the Glide and OkHttp

我需要从图像中获取 http 响应 headers。如何为来自 Glide 的每个请求创建一个拦截器?是否需要创建 Glide Module?

首先,您必须使用自定义 GlideModule 而不是默认的来集成 Glide 和 OkHttp。

请参阅 this example 了解如何操作。

那你得写一个OkHttp拦截器来拦截响应信息,得到响应headers。

参考这个 OkHttp Logging Interceptor 代码,您将了解如何拦截响应并获得响应 headers。

您必须将该拦截器设置为您的 OkHttpClient(这主要是一个单例实例):

OkHttpClient okHttpClient = new OkHttpClient.Builder().addInterceptor(yourInterceptor).build();

必须将 OkHttpClient 实例传递给自定义 GlideModule 实现的 registerComponents() 回调:

glide.register(GlideUrl.class, InputStream.class, new OkHttpUrlLoader.Factory( okHttpClient ));

You can get response header by intercepting your glide response

@GlideModule
class MyGlideModule : AppGlideModule() {
      override fun applyOptions(context: Context?, builder: GlideBuilder?) {
      }

      override fun registerComponents(context: Context?, glide: Glide?, 
        registry: Registry?) {
            super.registerComponents(context, glide, registry)
            val httpClient = OkHttpClient.Builder()
            httpClient.addInterceptor({ chain: Interceptor.Chain? ->
                val response = chain?.proceed(chain.request())
                // for get specific header  
                val header = response?.header("specific header")
                // for get all headers 
                val headers = response?.headers()

                response
            })

            registry?.replace(GlideUrl::class.java, InputStream::class.java, 
            OkHttpUrlLoader.Factory(httpClient.build()))
        }
    }

如果您无法找到任何 类 类似 OkHttpUrlLoader 的东西,请找到它 Here