如何使用 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
我需要从图像中获取 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