这可能是毕加索的一个错误,但我想先发布到StackOverflow。
我收到错误"收到的响应为0内容长度"从磁盘缓存中读取响应时。我每次都可以通过
重现这个错误1)在类路径中不使用OKHttp运行我的应用程序。让图片加载
2)将OkHttp添加到classpath中,我收到了该错误。
我将Picasso源添加到我的项目中以进一步调查。我发现了
1)关闭缓存connection.setUseCaches(false);
将绕过错误(因为它忽略了缓存)
2)我在Picasso源中找到了切换,检查OkHttp是否可用
try {
Class.forName("com.squareup.okhttp.OkHttpClient");
okHttpClient = true;
} catch (ClassNotFoundException ignored) {}
并且能够通过硬编码真实再现错误,然后在运行之间重现错误。
我想解决这个问题,因此我可以使用OKHttp(并为我当前的用户提供可行的升级)以及随之而来的所有好处。我也看过这个"阅读响应没有来自缓存的内容长度"在我的实时环境中的其他情况下的问题。一旦我进入状态缓存中的错误响应,图片将永远不会出现。
答案 0 :(得分:3)
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();