32

由于有关于 Volley 的精彩演示,我试图将它包含在我正在处理的项目中。我发现自己正在纠正我在已发布的源代码中发现的一些错误。

有人知道是否会有一些 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

这里是贡献页面 AOSP的另一个链接。我认为它更像是一个独立的库。我会检查一下,尽管我仍然很欣赏有关 Volley 的更多信息和教程。我建议的源代码只是一个快速而肮脏的修复,它在我的演示项目中起到了作用。

更新 2

I found another interesting blog post by Ognyan Bankov mentioned as a response to another question, which could be helpful.

4

1 回答 1

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 实现您自己的默认值(例如,在将连接交给 Volley 之前在连接上调用 followRedirects() --- 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");

当然,这缺少任何错误处理(如果外部存储不可用怎么办?)。另外,不要忘记您需要适当的权限才能写入外部存储。

希望有帮助。

于 2013-08-12T01:44:35.790 回答