我需要从图片中获取http响应头。如何为来自Glide的每个请求创建拦截器?是否需要创建一个Glide模块?
我需要从图片中获取http响应头。如何为来自Glide的每个请求创建拦截器?是否需要创建一个Glide模块?
GlideModule
来集成Glide和OkHttp,而不是使用默认的模块。请参考这个例子了解如何实现。OkHttp
拦截器来拦截响应信息并获取响应头。请参考OkHttp Logging Interceptor代码,您将了解如何拦截响应并获取响应头。OkHttpClient
中(通常是一个单例实例):OkHttpClient okHttpClient = new OkHttpClient.Builder().addInterceptor(yourInterceptor).build();
OkHttpClient
实例需要传递给您自定义的 GlideModule
实现的 registerComponents()
回调函数:glide.register(GlideUrl.class, InputStream.class, new OkHttpUrlLoader.Factory( okHttpClient ));
@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的类,则可以在此处找到它 这里。