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

Java 如何使用Glide和OkHttp获取http响应头,java,android,okhttp,android-glide,Java,Android,Okhttp,Android Glide,我需要从映像中获取http响应头。如何为Glide的每个请求创建拦截器?是否需要创建Glide模块?首先,您必须使用自定义的Glide模块而不是默认模块集成Glide和OkHttp 请参阅如何做到这一点 然后您必须编写一个OkHttp拦截器来截取响应信息并获取响应头 参考这段代码,您将了解如何拦截响应并获取响应头 您必须将该拦截器设置为您的OkHttpClient(通常是单例实例): 必须将该OkHttpClient实例传递给自定义GlideModule实现的registerComponents

我需要从映像中获取http响应头。如何为Glide的每个请求创建拦截器?是否需要创建Glide模块?

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

请参阅如何做到这一点

然后您必须编写一个
OkHttp
拦截器来截取响应信息并获取响应头

参考这段代码,您将了解如何拦截响应并获取响应头

您必须将该拦截器设置为您的
OkHttpClient
(通常是单例实例):

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

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

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

请参阅如何做到这一点

然后您必须编写一个
OkHttp
拦截器来截取响应信息并获取响应头

参考这段代码,您将了解如何拦截响应并获取响应头

您必须将该拦截器设置为您的
OkHttpClient
(通常是单例实例):

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

glide.register(GlideUrl.class, InputStream.class, new OkHttpUrlLoader.Factory( okHttpClient ));
您可以通过截取滑翔响应来获取响应标题

如果您找不到任何类似OkHttpUrlLoader的类,请找到它

您可以通过截取滑翔响应来获取响应标题

如果您找不到任何类似OkHttpUrlLoader的类,请找到它

乐于帮助:)此示例中的链接已断开。乐于帮助:)此示例中的链接已断开。
@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()))
        }
    }