【发布时间】: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 团队甚至可能需要一个可重现的测试用例,我不会感到震惊。