因为有这个awesome presentation on Volley我试图把它包含在我正在研究的项目中。我发现自己纠正了我在source code发现的一些错误。
有人知道是否会有一些可以为项目做贡献的GitHub项目,还是有其他方式向开发人员传达错误和功能请求?
关于我与Volley的问题:
1。似乎重定向不能正常工作:
Volley返回错误代码302
,而不是重定向到响应头中给出的位置。
2。获取缓存目录在运行4.2.2的模拟器上不起作用:
cacheDir = new File(context.getCacheDir(), DEFAULT_CACHE_DIR);
final String cacheDir1 = "/Android/data/cache/";
cacheDir = new File(Environment.getExternalStorageDirectory().getPath() + cacheDir1);
此解决方法是特定于平台的。只是想为完成添加它。
除此之外,我认为Volley真的是一段很棒的代码,而且正是我一直在寻找的,直到我自己做了;)
更新1
此处是contribution page AOSP的另一个链接。我认为它更像是一个独立的库。我会检查出来,虽然我仍然欣赏有关Volley的更多信息和教程。 我建议的源代码只是一个快速而肮脏的修复,它在我的演示项目中起到了作用。
更新2
我发现另一个interesting blog post by Ognyan Bankov被提及作为对另一个问题的回复,这可能会有所帮助。
答案 0 :(得分:6)
似乎在评论中已经回答了很多,但我会尝试覆盖其余部分,或者更确切地说,我将尝试涵盖您的具体问题。
1)Volley不会自己处理重定向。它由底层的HttpStack处理。例如,我目前使用OkHttp(来自Square)作为我的Volley的HTTP客户端。见https://plus.google.com/108284392618554783657/posts/eJJxhkTQ4yU https://gist.github.com/JakeWharton/5616899 OkHttp很棒,因为它具有处理SPDY,重定向和其他HTTP便利性的出色默认值。您也可以使用它来实现您自己的平台HttpUrlConnection的默认值(在连接之前调用followRedirects(),然后将其交给Volley,例如--- https://developer.android.com/reference/java/net/HttpURLConnection.html#setFollowRedirects(boolean))
2)我甚至不确定我是否将getCacheDir()用于Volley缓存。根据文档(https://developer.android.com/reference/android/content/Context.html#getCacheDir()),该缓存目录不应超过1 MB。然而,大多数客户端倾向于使用10 mb作为http缓存的默认值(1 MB对于Http缓存来说真的很小!!)。另外,为什么使用这样的深度缓存目录?没有理由“cacheDir1”应该是多个目录深。只需将其设为文件名即可。 getCacheDir()无论如何都会返回你自己的文件夹。我建议在初始化Volley时这样做(通常推荐的地方是Application类):
File volleyCacheFile = new File(getExternalCacheDir(), "volleyCache.tmp");
当然,这没有任何错误处理(如果外部存储不可用怎么办?)。另外,不要忘记您需要相应的权限才能编写外部存储空间。
希望有所帮助。