关于在我的项目中使用 Volley,我有几个问题:
- 这个库可以在任何 Java 项目中使用还是仅在 Android 中使用?
- 我在这里看到多个分支,并且没有关于从哪个分支开始的文档。我应该从哪个分支开始?
- 您如何将此库集成到您自己的项目中?什么方法更好:将 Volley 作为一个独立的库项目并旋转一个 jar 并将其放入您的项目中或复制项目中的所有源代码?
关于在我的项目中使用 Volley,我有几个问题:
$ git clone https://android.googlesource.com/platform/frameworks/volley
$ cd volley
$ android update project -p .
$ ant jar
然后,复制bin/volley.jar
到您的libs/
文件夹中,然后就可以了!
在Volley 课程中,Google 指示将 Volley 作为 Android 库项目或.jar
文件添加到我们的项目中。
以下是使用Android Studio或Eclipse创建 Volley.jar
文件的方法:
笔记:
在这两种情况下,我建议将.jar
文件重命名为 Volley 最新提交的日期,即volley_20150319.jar
,以保持版本控制简单。
[your local path to volley]/build/intermediate/bundles/
debug
和release
文件夹中,您都会找到一个名为classes.jar
.libs/
文件夹中。libs/
文件夹中。1)这个库是否也可以用作普通Java项目中的网络库,或者它是否仅限于Android
它仅适用于 Android,因为它取决于 Android 特定的类。您可以通过查看源代码来判断这一点,例如RequestQueue
.
2)我在这里看到多个分支,没有关于从哪个分支开始的文档。我应该从哪个分支开始?
Google I|O 演示文稿中的说明只是克隆git
存储库,默认情况下将从master
分支中提取。
3)如何将此库集成到您自己的项目中?什么方法更好:将 Volley 作为一个独立的库项目并旋转一个 jar 并将其放入您的项目中或复制项目中的所有源代码?
Google I|O 演示文稿中的说明是将源代码添加到您的项目中。就个人而言,我认为这是一种奇怪的方法。
Volley 库现在由 Android 开源项目发布:
dependencies {
implementation 'com.android.volley:volley:1.1.0'
}
更新: Volley 现已正式发布,可通过 JCenter 获得。以下是如何导入它:
compile 'com.android.volley:volley:1.0.0'
描述方式:
如果你使用 Gradle,你可以从这里导入 Volley 。
dependencies {
compile 'com.mcxiaoke.volley:library:1.0.+'
}
笔记
这是android volley 库的非官方镜像(有一些小错误修复,请参阅更新日志。),源代码将定期与官方 volley 存储库同步。
由于关于单一方法的答案有很多,但没有一个是比较不同的截击启动和运行方法的答案,我也投入了两分钱。也可以随意编辑/增强这个答案。
[MyProjectPath]/app/libs/
文件夹中right-click
上它并选择Add As Library...
git clone https://github.com/git/git
... sry bad one,但无法抗拒 ^^)git clone https://android.googlesource.com/platform/frameworks/volley
将com
文件夹从内部复制[path_where_you_typed_git_clone]/volley/src
到您的项目app/src/main/java
文件夹(或者集成它,如果您已经有一个 com 文件夹!!;-))
这些文件会立即显示在 Android Studio 中。对于 Eclipse,您必须先right-click
打开src
文件夹并按refresh
(或F5
)。
通过 git 进行操作是 android 教程中官方建议的(看这里)。
在您的项目src/build.gradle
文件中添加以下 volley 依赖项:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
// ...
compile 'com.mcxiaoke.volley:library:1.+'
}
单击Try Again
应该立即出现在文件顶部的文件,Build
如果没有,则单击它
这里的主要“优势”是,这将使您的版本保持最新,而在其他两种情况下,您必须手动更新 volley。
在“缺点”上,它不是来自谷歌的官方,而是第三方每周镜像。
但是这两点确实与您需要/想要的有关。此外,如果您不想要更新,只需将所需的版本放在那里,例如compile 'com.mcxiaoke.volley:library:1.0.7'
.
如果您使用 GIT 进行自己的代码管理,为什么不简单地将其作为子模块添加到项目中...
git submodule add https://android.googlesource.com/platform/frameworks/volley -b master Volley
这样一来,随着 Volley 代码库的更新,更新也很简单......
git submodule git pull
您可以在自己的项目中扩展主 Volley 类以进行修改,这样您就不必在每次更新 Volley 框架时都对更改进行编码。
这是一个 Volley Http 请求的快速入门,它非常容易集成。
您需要一个应用程序范围的 Volley RequestQueue:
1. private static RequestQueue reqQueue;
您可以将它放在您的应用程序类中,并通过 getRequestQueue() 使其静态可用。
然后,您已经可以使用 RequestQueue.add() 方法使用 Volley 执行第一个请求。
2. reqQueue.add(...)
使用 JsonObjectRequest 查询单个对象,使用 JsonArrayRequest 查询对象列表。
queue.add(new JsonArrayRequest(URL, new Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
//SUCCESS
}}, new ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
//ERROR
}}));
请记住在服务器端正确设置 Http Expires 标头,以便 Volley 可以利用它的集成缓存功能
这是 Android Studio ang Gradle 的另一种方式:
您需要项目的 build.gradle 中的下一个(在您的应用程序结构级别):
repositories {
maven {
url 'https://github.com/Goddchen/mvn-repo/raw/master/'
}
mavenCentral()
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
// You must install or update the Support Repository through the SDK manager to use this dependency.
compile 'com.android.support:support-v4:20.+'
compile 'com.android:volley:1.+'
}
首先从 Git 克隆项目
$git clone https://android.googlesource.com/platform/frameworks/volley
你应该知道的一些基本的截击类型是
要首先使用 volley,您需要创建 RequestQueue 的对象
RequestQueue mQueue = Volley.newRequestQueue(getApplicationContext());
第二 -> 使用 JsonArrayRequest 或 JsonObjectRequest 发出请求
JsonArrayRequest mJsonRequest = new JsonArrayRequest(url,
new Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
// here you can parse response and use accordingly
}
}, new ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// here you will receive errors and show proper message according to error type
}
});
最后将请求放入队列。IE
mQueue.add(mJsonRequest);
另外,我建议您制作一个单例 RequestQuery。
将 Volley jar(或任何 jar)添加到 Android Studio 1.0.2 现在要容易得多。从 Android Studio 外部复制volley.jar
到<yourproject>/app/libs
(应该已经存在)。因为默认的 Gradle 设置包括这一行:
compile fileTree(dir: 'libs', include: ['*.jar'])
...现在一切都设置好了。可能看起来并非如此,因为默认的项目结构视图(File -> Project Structure)
不显示libs
目录。要查看它,您需要使用项目结构视图上方的微调器将其更改Android
为Project
.
您可以通过构建应用程序(可能不是必需的)来看到它正在工作,然后开始键入一些这样的代码:
RequestQueue request
您会看到 Android Studio 会提示您完成RequestQueue (com.android.volley)
。
如果那是您的偏好,那么构建调试 aar 也很容易。
git clone https://android.googlesource.com/platform/frameworks/volley
然后在不同的目录中创建一个新的 Android Studio 项目(只是一个常规的应用程序项目)。一旦完成,添加一个新的子模块(文件|新模块)。选择导入现有项目选项并将其指向您签出 volley 的目录。完成后,您可以制作您的模块,它将创建一个 aar 文件。
使用 eclipse Luna 你必须:
如果您使用的是 Android Studio,您应该将此行放在 gradle 文件中
compile 'com.mcxiaoke.volley:library:1.0.15'
如果你想使用 GET 方法,你应该有类似的东西。
private void weatherData() {
JsonObjectRequest jsonObjReq = new JsonObjectRequest(
Request.Method.GET,
"URL with JSON data",
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
//Your code goes here
} catch (JSONException e) {
Log.e("TAG", e.toString());
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
// Adding request to request queue
AppController.getInstance().addToRequestQueue(jsonObjReq);
}
但是如果你想在服务器中发布数据,那么你应该构建一个 HashMap 和 Volley 库在将它们发布到服务器之前将这些键/对值转换为 JSON 对象。这是一个例子。
final HashMap<String, String> postParams = new HashMap<String, String>();
postParams.put("username", username);
postParams.put("password", password);
Response.Listener<JSONObject> listener;
Response.ErrorListener errorListener;
final JSONObject jsonObject = new JSONObject(postParams);
JsonObjectRequest jsonObjReq = new JsonObjectRequest(
"YOUR URL WITH JSON DATA",
jsonObject,
new com.android.volley.Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d("TAG", response.toString());
try {
if (response.getString("status").equals("fail")) {
} else if (response.getString("status").equals("success")) {
} catch (JSONException e) {
Log.e("TAG", e.toString())
}
}
},
new com.android.volley.Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
//VolleyLog.d("TAG", "Error: " + error.getMessage());
//pDialog.dismiss();
}
}) {
@Override
public String getBodyContentType() {
return "application/json; charset=utf-8";
}
};
// Adding request to request queue
AppController.getInstance().addToRequestQueue(jsonObjReq, tag_json_obj);
VolleySingleton.getInstance(getApplicationContext()).
addToRequestQueue(jsonObjRequest);
}
当第二行列出支持库时,我遇到了问题。重新排序这两个语句对我有用。
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.mcxiaoke.volley:library:1.0.6'
compile 'com.android.support:support-v4:20.+'
}
我克隆了Volley 项目并添加了允许使用 Gradle 构建库的配置文件。
有了这个,您可以将库安装到本地 Maven 存储库中,并通过 Gradle 从 Android 项目中引用它。
请记住,那里有各种对库进行了改进的克隆。可能需要集成它们并编译您的库的私有增强版本。
除了库本身之外,构建脚本还生成JavaDoc和源档案。
Volley 可以作为 git 子模块添加到您当前的项目 repo 中。这个 git 子模块将指向 Volley 的官方 git repo。因此,您只需更新子模块指针即可从官方 git repo 获取更新。
此外,如果您在主项目中添加 Volley 作为库模块,您可以轻松自定义它。它对于调试目的也非常有用。
要实现这一点,请按照以下步骤操作:
第一步:
在 Android 应用程序项目 GIT Repo 中添加 volley 作为子模块。git submodule add -b master https://android.googlesource.com/platform/frameworks/volley Libraries/Volley
第二步:
在 settings.gradle 中,添加以下内容以将 volley 添加为工作室项目模块。包括 ':Volley' 项目(':Volley').projectDir=new File('../Libraries/Volley')
第三步:
在 app/build.gradle 中,添加以下行来编译 Volley compile project(':Volley')
这就是全部!Volley 已成功添加到项目中。
每次您想从 Google 官方 Volley 的 repo 中获取最新代码时,只需运行以下命令
git submodule foreach git pull
更多详细信息:https ://gitsubmoduleasandroidtudiomodule.blogspot.in/
GIT Repo 示例代码:https ://github.com/arpitratan/AndroidGitSubmoduleAsModule
我喜欢和Volley一起工作。为了节省开发时间,我尝试编写小型方便的库Gloxey Netwok Manager来为我的项目设置 Volley。它包括JSON 解析器和其他有助于检查网络可用性的其他方法。
库提供ConnectionManager.class
了可用于Volley String和Volley JSON请求的不同方法。您可以发出带有或不带有标头的GET、PUT、POST、DELETE请求。您可以在此处阅读完整的文档。
只需将此行放在您的 gradle 文件中。
依赖{
compile 'io.gloxey.gnm:network-manager:1.0.1'
}