【问题标题】:Picasso: Received response with 0 content-length header FROM DISKPicasso:收到来自磁盘的 0 内容长度标头的响应
【发布时间】:2014-08-26 18:54:57
【问题描述】:

这可能是 Picasso 中的一个错误,但我想先发布到 StackOverflow。

当从磁盘的缓存中读取响应时,我收到错误“Received response with 0 content-length”。我每次都可以通过

重现此错误

1) 在类路径中不使用 OKHttp 运行我的应用程序。让图片加载

2) 将 OkHttp 添加到类路径中,我得到了那个错误。

我将毕加索源添加到我的项目中以进一步调查。我发现了

1) 关闭缓存connection.setUseCaches(false); 将绕过错误(因为它忽略了缓存)

2) 我在 Picasso 源代码中找到了用于检查 OkHttp 是否可用的开关

try { Class.forName("com.squareup.okhttp.OkHttpClient"); okHttpClient = true; } catch (ClassNotFoundException ignored) {}

并且能够通过在运行之间硬编码 true 和 false 来重现错误。

我想解决这个问题,这样我就可以使用 OKHttp(并为我当前的用户提供可行的升级)以及它带来的所有好处。在我的实时环境中的其他情况下,我也看到了这种“读取响应中没有缓存内容长度”的问题。一旦我进入缓存中响应错误的状态,图片将永远不会显示。

【问题讨论】:

  • 我怀疑没有引发错误的代码以及异常本身的堆栈跟踪,任何人都能够帮助您。如果 Square 团队甚至可能需要一个可重现的测试用例,我不会感到震惊。

标签: android picasso


【解决方案1】:
OkHttpClient okHttpClient = new OkHttpClient();
RestAdapter restAdapter = new RestAdapter.Builder().setClient(new OkClient(okHttpClient)).build();
OkHttpDownloader downloader = new OkHttpDownloader(okHttpClient);
Picasso picasso = new Picasso.Builder(this).downloader(downloader).build();

来源:https://stackoverflow.com/a/23832172/2158970

【讨论】:

  • 这不使用缓存。它每次都从网络加载。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多