121

关于在我的项目中使用 Volley,我有几个问题:

  1. 这个库可以在任何 Java 项目中使用还是仅在 Android 中使用?
  2. 我在这里看到多个分支,并且没有关于从哪个分支开始的文档。我应该从哪个分支开始?
  3. 您如何将此库集成到您自己的项目中?什么方法更好:将 Volley 作为一个独立的库项目并旋转一个 jar 并将其放入您的项目中或复制项目中的所有源代码?
4

19 回答 19

204
$ git clone https://android.googlesource.com/platform/frameworks/volley
$ cd volley
$ android update project -p .
$ ant jar

然后,复制bin/volley.jar到您的libs/文件夹中,然后就可以了!

资源

于 2013-05-23T18:16:41.450 回答
73

Volley 课程中,Google 指示将 Volley 作为 Android 库项目或.jar文件添加到我们的项目中。

以下是使用Android StudioEclipse创建 Volley.jar文件的方法:

笔记:

在这两种情况下,我建议将.jar文件重命名为 Volley 最新提交的日期,即volley_20150319.jar,以保持版本控制简单。


安卓工作室:

  1. 通过 Git 克隆 Volley 存储库。
  2. 将项目导入 Android Studio。(我在Android Studio中导入的时候一般会选择项目的gradle文件)
  3. 构建项目。(我不得不更改 gradle 构建设置以反映最新的构建工具和 gradle 版本,但它通常是最新的)。
  4. 在文件资源管理器中,导航到[your local path to volley]/build/intermediate/bundles/
  5. debugrelease文件夹中,您都会找到一个名为classes.jar.
  6. 将任一 JAR 文件复制到您的libs/文件夹中。
  7. Gradle 同步,你就完成了。

蚀:

  1. 通过 Git 克隆 Volley 存储库。
  2. 将项目导入eclipse。
  3. 右键单击项目并选择导出...
  4. 选择Java/JAR 文件
  5. 我们只对src文件夹感兴趣,没有别的。确保只有它被选中的最简单方法是取消选择项目,然后选择里面的src文件夹。
  6. 选中导出生成的类文件和资源选项。
  7. 可选:如果您希望 Javadoc 可见,还请选择Export Java source files resources
  8. 创建 JAR 文件并将其放在您的libs/文件夹中。
于 2013-07-28T10:39:11.170 回答
48

1)这个库是否也可以用作普通Java项目中的网络库,或者它是否仅限于Android

它仅适用于 Android,因为它取决于 Android 特定的类。您可以通过查看源代码来判断这一点,例如RequestQueue.

2)我在这里看到多个分支,没有关于从哪个分支开始的文档。我应该从哪个分支开始?

Google I|O 演示文稿中的说明只是克隆git存储库,默认情况下将从master分支中提取。

3)如何将此库集成到您自己的项目中?什么方法更好:将 Volley 作为一个独立的库项目并旋转一个 jar 并将其放入您的项目中或复制项目中的所有源代码?

Google I|O 演示文稿中的说明是将源代码添加到您的项目中。就个人而言,我认为这是一种奇怪的方法。

于 2013-05-20T23:06:06.957 回答
41

你可以下载volley.jar

来源:AndroidHive

复制Volley.jar到库

然后

右键volley.jar ->添加为库

在此处输入图像描述

于 2014-10-03T19:25:28.560 回答
26

Volley 库现在由 Android 开源项目发布:

dependencies {
    implementation 'com.android.volley:volley:1.1.0'
}
于 2016-02-12T20:51:39.650 回答
16

更新: Volley 现已正式发布,可通过 JCenter 获得。以下是如何导入它:

compile 'com.android.volley:volley:1.0.0'

描述方式:

如果你使用 Gradle,你可以从这里导入 Volley 。

dependencies {
    compile 'com.mcxiaoke.volley:library:1.0.+'
}

笔记

这是android volley 库的非官方镜像(有一些小错误修复,请参阅更新日志。),源代码将定期与官方 volley 存储库同步。

于 2014-07-29T21:47:09.593 回答
13

方法很多

由于关于单一方法的答案有很多,但没有一个是比较不同的截击启动和运行方法的答案,我也投入了两分钱。也可以随意编辑/增强这个答案。

将其添加为库 - (快速解决方案)

  1. 下载地址:androidhive
  2. 把它放在你的[MyProjectPath]/app/libs/文件夹中
  3. 在 Android Studioright-click上它并选择Add As Library...

来自 git 的源文件 - (一个相当官方的解决方案)

  1. 下载/安装git 客户端(如果您的系统上还没有它)(或者通过git clone https://github.com/git/git... sry bad one,但无法抗拒 ^^)
  2. 执行git clone https://android.googlesource.com/platform/frameworks/volley
  3. com文件夹从内部复制[path_where_you_typed_git_clone]/volley/src到您的项目app/src/main/java文件夹(或者集成它,如果您已经有一个 com 文件夹!!;-))

    这些文件会立即显示在 Android Studio 中。对于 Eclipse,您必须先right-click打开src文件夹并按refresh(或F5)。

    通过 git 进行操作是 android 教程中官方建议的(看这里)。

通过“非官方”镜像 Gradle - (动态解决方案)

  1. 在您的项目src/build.gradle文件中添加以下 volley 依赖项:

        dependencies {
            compile fileTree(dir: 'libs', include: ['*.jar'])
            // ...
    
            compile 'com.mcxiaoke.volley:library:1.+'
        }
    
  2. 单击Try Again应该立即出现在文件顶部的文件,Build如果没有,则单击它

    这里的主要“优势”是,这将使您的版本保持最新,而在其他两种情况下,您必须手动更新 volley。

    在“缺点”上,它不是来自谷歌的官方,而是第三方每周镜像。

    但是这两点确实与您需要/想要的有关。此外,如果您不想要更新,只需将所需的版本放在那里,例如compile 'com.mcxiaoke.volley:library:1.0.7'.

于 2014-10-27T11:35:54.173 回答
11

如果您使用 GIT 进行自己的代码管理,为什么不简单地将其作为子模块添加到项目中...

git submodule add https://android.googlesource.com/platform/frameworks/volley -b master Volley

这样一来,随着 Volley 代码库的更新,更新也很简单......

git submodule git pull

您可以在自己的项目中扩展主 Volley 类以进行修改,这样您就不必在每次更新 Volley 框架时都对更改进行编码。

于 2013-07-24T15:24:28.163 回答
8

这是一个 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 可以利用它的集成缓存功能

于 2013-05-28T11:10:12.250 回答
2

这是 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.+'
}
于 2014-07-22T16:03:00.737 回答
1

首先从 Git 克隆项目

$git clone https://android.googlesource.com/platform/frameworks/volley
  • 在 Eclipse 中导入凌空。
  • 右键单击您的项目-> 属性-> android
  • 添加库-> 选择 volley(如果你没有看到 volley ,请点击 volley 库,转到属性和 android 并单击库)
  • 添加 volley 作为库后,您可以开始在应用程序中使用它。

你应该知道的一些基本的截击类型是

  • 请求队列
  • JsonArrayRequest
  • JsonObjectRequest

要首先使用 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。

于 2014-01-21T18:01:20.357 回答
1

将 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目录。要查看它,您需要使用项目结构视图上方的微调器将其更改AndroidProject.

您可以通过构建应用程序(可能不是必需的)来看到它正在工作,然后开始键入一些这样的代码:

 RequestQueue request

您会看到 Android Studio 会提示您完成RequestQueue (com.android.volley)

于 2015-01-16T17:36:29.507 回答
1

如果那是您的偏好,那么构建调试 aar 也很容易。

git clone https://android.googlesource.com/platform/frameworks/volley

然后在不同的目录中创建一个新的 Android Studio 项目(只是一个常规的应用程序项目)。一旦完成,添加一个新的子模块(文件|新模块)。选择导入现有项目选项并将其指向您签出 volley 的目录。完成后,您可以制作您的模块,它将创建一个 aar 文件。

于 2015-01-26T20:08:27.913 回答
1

使用 eclipse Luna 你必须:

  • 从 GIT 克隆它。
  • 将 JAVA 文件夹下的 COM 文件夹剪切(复制和删除)到 SRC 文件夹下方,就像在常规 Android 项目中一样。
  • 将 project.properties 目标更改为 15 而不是 8。
  • 构建项目。
  • 将项目导出为包含源的 jar 文件 - 使用导出工具。
  • 在导出的 jar 中只保留 COM 文件夹和 META-INF 文件夹,删除所有其他文件夹 - 使用 zip 工具删除 jar 的内容。
  • 将此 jar 用作您的 Volley jar 项目。
  • 将 Volley jar 放在目标 Android 项目的 lib 文件夹中。
于 2015-02-26T20:16:36.397 回答
1

如果您使用的是 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);
 }
于 2015-08-12T14:25:33.753 回答
0

当第二行列出支持库时,我遇到了问题。重新排序这两个语句对我有用。

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.mcxiaoke.volley:library:1.0.6'
    compile 'com.android.support:support-v4:20.+'
}
于 2014-09-11T17:28:58.460 回答
0

我克隆了Volley 项目并添加了允许使用 Gradle 构建库的配置文件。

有了这个,您可以将库安装到本地 Maven 存储库中,并通过 Gradle 从 Android 项目中引用它。

要求

  1. 马文
  2. 摇篮

如何使用

  1. 克隆我的存储库
  2. 构建和安装 Volley 库
  3. 在 Android 项目中引用该库

Bug修复

请记住,那里有各种对库进行了改进的克隆。可能需要集成它们并编译您的库的私有增强版本。

好处

除了库本身之外,构建脚本还生成JavaDoc源档案

于 2014-04-03T13:12:30.617 回答
0

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

于 2016-07-09T09:54:16.680 回答
0

对于未来的读者

我喜欢和Volley一起工作。为了节省开发时间,我尝试编写小型方便的库Gloxey Netwok Manager来为我的项目设置 Volley。它包括JSON 解析器和其他有助于检查网络可用性的其他方法。

库提供ConnectionManager.class了可用于Volley StringVolley JSON请求的不同方法。您可以发出带有或不带有标头的GET、PUT、POST、DELETE请求。您可以在此处阅读完整的文档。

只需将此行放在您的 gradle 文件中。

依赖{

   compile 'io.gloxey.gnm:network-manager:1.0.1'

}

于 2017-07-18T20:16:31.610 回答