【问题标题】:Volley Android Networking LibraryVolley Android 网络库
【发布时间】:2013-05-15 14:34:30
【问题描述】:

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

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

【问题讨论】:

  • 当你在一个 git repo 中看到多个分支时,你应该总是假设他们希望你克隆并开始使用 master 分支。任何其他分支都是次要的。
  • 您也可以将 Volley 添加为 git 子模块。详解:gitsubmoduleasandroidtudiomodule.blogspot.in

标签: android http android-networking android-volley


【解决方案1】:
$ git clone https://android.googlesource.com/platform/frameworks/volley
$ cd volley
$ android update project -p .
$ ant jar

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

source

【讨论】:

  • 注意:您必须为此修复 PATH 变量,要在 linux 上执行此操作,请执行以下操作(在您的 .profile 或放置 PATH 变量的任何位置): 1. export ANDROID_HOME=
  • 我不得不去 5 个不同的谷歌搜索结果找到安装他们自己的网络库的说明。
  • 严重问题:为什么在任何地方都没有直接下载 volley Jar 文件?一个通用 JAR 文件有问题吗?
  • 其他人是否得到“volley 不是一个有效的项目(AndroidManifest.xml 未找到)
  • @ChintanSoni,~ 3 个月前,git 提交 c9ef93a 说“从 Gradle 迁移到 Maven”。不是运行“android update -p.”,而是运行 maven 命令,“mvn compile”,然后是“mvn package”。
【解决方案2】:

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

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

注意:

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


Android 工作室:

  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 的JAR 文件。
  6. 将任一 JAR 文件复制到您的 libs/ 文件夹中。
  7. Gradle 同步,大功告成。

日食:

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

【讨论】:

  • 这很棒。对我来说最重要的提示是 #5(仅选择 src),因为这有助于我尝试包含的其他库。
  • 你救了我一天! “仅检查 src 文件夹”对我有用 :)
【解决方案3】:

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

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

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

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

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

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

【讨论】:

  • 致命:远程错误:拒绝访问(在您的国家/地区不可用)!如果我下载 jar 并将 jar 添加到我的项目中,它在我的国家有效吗?或者我怎么能下载jar,而不克隆它?!
  • 是的,他们的说明似乎建议使用“master”分支,但我觉得这有点奇怪,因为 master 似乎正在积极改变。也许找到最新的发布分支会更好。
【解决方案4】:

您可以下载volley.jar

来源:AndroidHive

Volley.jar 复制到库

那么

右键volley.jar->添加为库

【讨论】:

  • 非常感谢您。每个人都只是说“将 jar 复制到您的 lib 文件夹”,然后将其保留。
  • cURL 说这个 jar 从 2014 年 5 月 1 日起就没有更新过
  • 新的 jar 版本怎么样?
【解决方案5】:

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

dependencies {
    implementation 'com.android.volley:volley:1.1.0'
}

【讨论】:

  • 确保从 libs 文件夹中删除 volley.jar(如果有的话)。并且,从您的 app/build.gradle 文件中删除对 volley.jar 的引用。
【解决方案6】:

更新: Volley 现在是官方的,可通过 JCenter 获得。导入方法如下:

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

描述方式:

如果您使用的是 Gradle,则可以从 here 导入 Volley。

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

注意

这是一个非官方镜像(有一些小错误修复,详情见Changelog。)对于android volley library,源代码将定期与官方volley存储库同步。

【讨论】:

  • 这应该在文件的什么位置?
  • 如果你使用 Gradle 来构建你的应用程序,应该是你项目中的 build.gradle 文件。如果您不使用 Gradle,请查看此处发布的其他解决方案。
  • 谢谢,但我的意思是上面的 build.gradle 文件应该在哪里?
  • 正如金属胡子在他的评论中所说。如果您已经声明了依赖项,则在依赖项中。如果没有,请在文件末尾声明它,但不要将其包含在 android 标签中
  • 注意:这不是官方的。它是 Volley 回购的一面镜子。
【解决方案7】:

方法很多

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

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

  1. 下载地址:androidhive
  2. 将其放在您的[MyProjectPath]/app/libs/ 文件夹中
  3. 在Android Studio中right-click就可以了,选择Add As Library...

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

  1. 下载/安装git client(如果您的系统上还没有它) (通过git clone https://github.com/git/git 其他方式...对不起一个,但无法抗拒^^)
  2. 执行git clone https://android.googlesource.com/platform/frameworks/volley
  3. [path_where_you_typed_git_clone]/volley/src 中的com 文件夹复制到您的项目app/src/main/java 文件夹(如果您已经有一个com 文件夹,则将其集成!;-))

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

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

通过“非官方”镜像 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'.

【讨论】:

    【解决方案8】:

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

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

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

    git submodule git pull
    

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

    【讨论】:

    • 问题是volley项目没有定义为android库。
    • 您必须在 IDE 中将 Volley 设置为库。
    • 这样做将修改项目属性,因此子模块将处于“已修改”状态。因此,我不想使用此解决方案。对于“正确定义”的项目,我会使用子模块,但不会用于 Volley。到目前为止,我创建了一个 Volley 罐子。
    • 您仍然可以从 Google 源代码中提取它们进行更改。如果你想修改他们的代码并存储,然后克隆它,让你的本地仓库引用两个不同的远程,并使用一个从它们中提取,另一个推送你想要存储的代码。我不确定为什么修改子模块会打扰您,如果您将项目存储在任何地方,并且您从父项目推送,而不在任何地方提交子模块,您仍然会推送对子模块提交的引用当你添加它时。
    【解决方案9】:

    这是一个 Volley Http 请求的快速入门,它非常容易集成。

    • 您需要一个应用程序范围的 Volley RequestQueue:

      1. private static RequestQueue reqQueue;
      

    你可以把它放在你的 Application 类中,并通过 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 可以利用其集成的缓存功能

    【讨论】:

    • 在使用RequestQueue api之前,您需要将这个库添加到您的项目中...
    【解决方案10】:

    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.+'
    }
    

    【讨论】:

    • 这样做是个坏主意。那里的那个图书馆已经1岁了。并且怀疑它会得到更新;-)
    【解决方案11】:

    首先从 Git 中克隆项目

    $git clone https://android.googlesource.com/platform/frameworks/volley
    
    • 在 Eclipse 中导入 volley。
    • 右键你的项目->属性->android
    • 添加库-> 选择凌空 (如果你在那里没有看到 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
    
                    }
                });
    

    最后将请求放入队列。即

    mQueue.add(mJsonRequest);
    

    另外我建议你做一个 RequestQuery 的单例。

    【讨论】:

      【解决方案12】:

      现在,向 Android Studio 1.0.2 添加 Volley jar(或任何 jar)要容易得多。从 Android Studio 外部,将 volley.jar 复制到 &lt;yourproject&gt;/app/libs(应该已经存在)。因为默认的 Gradle 设置包括这一行:

       compile fileTree(dir: 'libs', include: ['*.jar'])
      

      ...现在一切都设置好了。看起来可能并非如此,因为默认的项目结构视图 (File -&gt; Project Structure) 不显示 libs 目录。要查看它,您需要使用项目结构视图上方的微调器将Android 更改为Project

      您可以通过构建应用程序(可能不是必需的)来查看它正在工作,然后开始输入如下代码:

       RequestQueue request
      

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

      【讨论】:

        【解决方案13】:

        如果您愿意,也很容易构建调试 aar。

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

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

        【讨论】:

          【解决方案14】:

          使用 eclipse Luna 你必须:

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

          【讨论】:

            【解决方案15】:

            如果你使用的是 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);
             }
            

            【讨论】:

              【解决方案16】:

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

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

              要求

              1. 马文
              2. 分级

              如何使用

              1. 克隆my repository
              2. 构建和安装 Volley 库
              3. 在 Android 项目中引用该库

              错误修正

              请记住有various clones out there which have improvements for the library。可能需要集成它们并编译您的库的私有增强版本。

              好处

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

              【讨论】:

                【解决方案17】:

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

                dependencies {
                    compile fileTree(dir: 'libs', include: ['*.jar'])
                    compile 'com.mcxiaoke.volley:library:1.0.6'
                    compile 'com.android.support:support-v4:20.+'
                }
                

                【讨论】:

                  【解决方案18】:

                  Volley 可以作为 git 子模块添加到您当前的项目 repo 中。 这个 git 子模块将指向 Volley 的官方 git repo。 因此,您只需更新子模块即可从官方 git repo 获取更新 指针。

                  如果您将 Volley 作为库模块添加到您的 main 项目,您可以轻松自定义它。这对调试非常有用 目的也是如此。

                  要实现这一点,请按照以下步骤操作:

                  第一步:

                  在 Android 应用项目 GIT Repo 中添加 volley 作为子模块。 git submodule add -b master https://android.googlesource.com/platform/frameworks/volley Libraries/Volley

                  第二步:

                  在 settings.gradle 中,添加以下内容以将 volley 添加为工作室项目模块。 包括“:凌空” project(':Volley').projectDir=new File('../Libraries/Volley')

                  第三步:

                  在 app/build.gradle 中,添加下面一行来编译 Volley 编译项目(':Volley')

                  就这些了! Volley 已成功添加到项目中。

                  每次想从谷歌官方获取最新代码 Volley 的 repo,只需运行以下命令

                  git submodule foreach git pull
                  

                  更多详细信息:https://gitsubmoduleasandroidtudiomodule.blogspot.in/

                  GIT Repo 示例代码:https://github.com/arpitratan/AndroidGitSubmoduleAsModule

                  【讨论】:

                    【解决方案19】:

                    面向未来的读者

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

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

                    只需将此行放入您的 gradle 文件中即可。

                    依赖{

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

                    }

                    【讨论】:

                      猜你喜欢
                      • 2014-04-29
                      • 2015-06-07
                      • 2022-01-20
                      • 2017-06-25
                      • 2015-11-04
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多