[英]How to get http response headers using the Glide and OkHttp
我需要从图像获取http响应标头。 如何为Glide的每个请求创建拦截器? 是否需要创建滑行模块?
首先,您必须使用自定义GlideModule
而不是默认的GlideModule
集成Glide和OkHttp。
请参考此示例以了解操作方法。
然后,您必须编写一个OkHttp
拦截器以拦截响应信息并获取响应头。
参考此OkHttp日志记录拦截器代码,您将了解如何拦截响应并获取响应标头。
您必须将该拦截器设置为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这样的类,请在这里找到
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.