当前位置: 首页 > 知识库问答 >
问题:

如何用okhttp3获取http响应头并决定是否获取响应体

哈翔
2023-03-14

我想使用响应头来确定是否获得响应正文,场景如下,我需要确定响应头中的会话是否过期,以确定是否继续下载文件。如果会话过期,只需取消下载。

我看了看OKHTTP的拦截器,觉得它不符合我的要求。

共有1个答案

韩经武
2023-03-14
    Interceptor interceptor = new Interceptor() {
        @Override
        public Response intercept(Chain chain) throws IOException {
            //拦截
            Response originalResponse = chain.proceed(chain.request());


            Headers headers = originalResponse.headers();
            if (callback != null){
                callback.onCallBack(headers,downloadId);
            }

            //包装响应体并返回
            return originalResponse
                    .newBuilder()
                    .body(new ProgressResponseBody(originalResponse.body(), progressListener))
                    .build();
        }
    };
    return client.newBuilder()
            .addInterceptor(interceptor)
            .build();
 类似资料:
  • 问题内容: 有什么方法可以获取原始响应的HTTP标头? 该方法对我不起作用,因为服务器吐出了多个“ Set-Cookie”,其中一些丢失了。 问题答案: 该方法对我不起作用 您是在的情况下问这个的吗?不可以,无法使用原始HTTP响应标头。您需要退回到低级的Socket编程。这是一个SSCCE,只需复制“ 粘贴 ”即可运行它。 为了避免每个尝试此代码片段的人都使SO过载,输出如下所示: 要了解有关以

  • 我需要从图像获得http响应头。如何为来自Glide的每个请求创建拦截器?有必要创建一个滑翔模块吗?

  • 问题内容: 如何从WebView获得HTTP标头响应?我找到了半解决方案,但是它是用Objective- C编写的,不能将其转换为Swift(我已经尝试过使用较差的Obj-C知识了)。 Objective-C代码: 该代码将如何看待Swift? 也许现在我们有更好的方法呢?并不总是启用缓存。 问题答案: 迅速 斯威夫特更严格; 您想保护自己免受指针和: 检查实际是否有 检查实际是否有 对响应进行类

  • 问题内容: 好的,因此我可以使用访问HTTP ajax响应标头 但似乎没有日期,尽管它在那里: 而代码只显示了这一点: 这是ajax调用: 有没有办法可以在响应头中获取日期? 问题答案: 这有帮助:

  • 我在我的swift应用程序中使用Moya进行网络请求。 我能够获得请求和映射结果使用Moya-Object Mapper。 我以前使用过alamofire,我熟悉如何进行post,获取请求和阅读响应头。 然而,我似乎无法理解我怎么能在莫亚也这样做。 我确实浏览了文档,但它没有说明任何关于读取响应头的内容。 有没有任何例子或教程,我可以遵循如何做一个HTTP身份验证和读取响应头。以及如何发出post

  • 我试图从Web读取JSON数据,但该代码返回空结果。我不确定我做错了什么。