繁体   English   中英

如何使用Glide和OkHttp获取HTTP响应标头

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM