【问题标题】:How to get http response headers using the Glide and OkHttp如何使用 Glide 和 OkHttp 获取 http 响应标头
【发布时间】:2019-03-25 00:34:13
【问题描述】:

我需要从图像中获取 http 响应标头。如何为来自 Glide 的每个请求创建一个拦截器?是否需要创建 Glide Module?

【问题讨论】:

    标签: java android okhttp android-glide


    【解决方案1】:

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

    请参阅 this example 了解如何执行此操作。

    那你得写一个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 ));
    

    【讨论】:

    • 乐于助人:)
    • “此示例”中的链接已损坏。
    【解决方案2】:

    你可以通过拦截你的滑翔响应来获取响应头

    @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

    【讨论】:

    • 其实可以加this来支持OkHttpUrlLoader
    • 我很困惑如何在 GlideApp.load() 调用中使用它?不同的 url 可能会产生不同的响应头。
    猜你喜欢
    • 2016-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多