机器人网络图书馆

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

  1. Can this library be used in any Java project or just Android?
  2. 我看到了多个分支 给你,但没有关于哪个分支的文档。我应该从哪个分支开始?
  3. 如何将这个库集成到您自己的项目中?哪种方法更好: 将 Volley 作为一个独立的库项目,然后旋转一个 jar 并将其放入项目中,还是复制项目中的所有源代码?
93535 次浏览

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

它仅适用于 Android,因为它依赖于 Android 特定的类。您可以通过查看 就像 RequestQueue的源代码来了解这一点。

2) I see multiple branches here and no documentation on which branch is to start with. Which branch should I use to start with?

Google I | O 演示文稿中的指令只是克隆 git repo,默认情况下它将从 master分支中提取。

3) How to integrate this library in your own project? What approach is better: Make Volley as a standalone library project and spin a jar and put it in your project or Copy the all source code inside your project?

The instructions from the Google I|O presentation were to add the source code to your project. Personally, I find this to be a bizarre approach.

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

然后,复制 bin/volley.jar到您的 libs/文件夹,你去!

来源

Here is a small Quickstart for a Volley Http Request, It is extremely easy to integrate.

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

    1. private static RequestQueue reqQueue;
    

You could put it in your Application class and make it statically available via getRequestQueue().

  • Then you can already use the RequestQueue.add() method to execute the first request with Volley.

    2. reqQueue.add(...)
    
  • Use JsonObjectRequest to query for a single object, use JsonArrayRequest to query for a list of objects.

    queue.add(new JsonArrayRequest(URL, new Listener<JSONArray>() {
    
    
    @Override
    public void onResponse(JSONArray response) {
    //SUCCESS
    }}, new ErrorListener() {
    
    
    @Override
    public void onErrorResponse(VolleyError error) {
    //ERROR
    }}));
    
  • Remember to set the Http Expires header correctly on your server-side so Volley can make use of it's integrated caching feature

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

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

这样,随着 Volley 代码库的更新,更新就变得简单了..。

git submodule git pull

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

排球课中,Google 指示要么将 Volley 作为 Android Library 项目添加到我们的项目中,要么作为 .jar文件添加到我们的项目中。

下面是如何使用 Android Studio日食创建 Volley .jar文件:

注意:

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


Android Studio:

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

日食:

  1. 通过 Git 克隆 Volley 存储库。
  2. 将项目导入 Eclipse。
  3. 右键单击项目并选择 出口..。
  4. 选择 Java/JAR 文件
  5. We're only interested in the src folder and nothing else. The easiest way to make sure only it is selected is to deselect the project and then select the src folder inside.
  6. 检查 导出生成的类文件和资源选项。
  7. 可选: 如果您希望 Javadoc 可见,也可以选择 导出 Java 源文件资源
  8. 创建 JAR 文件并将其放在 libs/文件夹中。

First clone the project from Git

$git clone https://android.googlesource.com/platform/frameworks/volley
  • 日食进攻截击。
  • 右键单击您的项目-> 属性-> 安卓
  • 添加库-> 选择截击 (如果您没有看到截击有,右键单击截击库,到属性和机器人,并单击库)
  • 在添加截击作为库之后,就可以开始在应用程序中使用它了。

Some basic class of volley you should know are

  • RequestQueue
  • JsonArrayRequest
  • JsonObjectRequest

要首先使用截击,您需要创建 RequestQueue 对象

RequestQueue mQueue = Volley.newRequestQueue(getApplicationContext());

Second-> 使用 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 的 Singleton。

我克隆了 排球项目并添加了配置文件,这些文件允许使用 Gradle 构建库。

通过这个,你可以将这个库安装到本地的 Maven 库中,并通过 Gradle 从一个 Android 项目中引用它。

规定

  1. 玛文
  2. 格拉德尔

How to use

  1. 克隆 我的仓库
  2. 构建并安装 Volley 库
  3. 在 Android 项目中引用库

Bugfixes

Please bear in mind that there are 有各种各样的克隆人,他们对图书馆进行了改进. It might be necessary to integrate them and compile your private enhanced version of the library.

福利

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

下面是 Android Studio 和 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.+'
}

更新: Volley 现在是官方的,可以通过 JCenter 获得:

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

评价方式:

如果您正在使用 Gradle,您可以从 给你导入 Volley。

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

Note

这是一个非官方的镜像(有一些小错误,详见 更衣室)对于 机器人排球库机器人排球库,源代码将周期性地与官方的截击存储库同步。

当第二行列出支持库时,我遇到了一个问题。

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

you can download the volley.jar

资料来源: 机器人巢穴

copy theVolley.jar to libs

Then

右击 volley.jar -> Add As Library

enter image description here

有很多方法

因为有很多关于单一方法的答案,但是没有一个是比较不同的方法让截击和运行,我也提出了我的意见。请随意编辑/增强这个答案。

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

  1. 机器人蜂巢下载
  2. 把它放在你的 [MyProjectPath]/app/libs/文件夹
  3. 在 Android Studio right-click中选择 Add As Library...

Source files from git - (a rather official solution)

  1. Download / install the git client (if you don't have it on your system yet) (否则通过 git clone https://github.com/git/git... 对不起坏的一个,但不能抗拒 ^ ^)
  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,您必须在 src文件夹上使用 right-click,并首先按 refresh(或 F5)。

    在 android 教程(看这里)中正式建议使用 git 来完成这项工作。

通过一个“非官方”的镜子-(动态解决方案)

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

        dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    // ...
    
    
    compile 'com.mcxiaoke.volley:library:1.+'
    }
    
  2. Click on Try Again which should right away appear on the top of the file, or just Build it if not

    The main "advantage" here is, that this will keep the version up to date for you, whereas in the other two cases you would have to manually update volley.

    On the "downside" it is not officially from google, but a third party weekly mirror.

    But both of these points, are really relative to what you would need/want. Also if you don't want updates, just put the desired version there instead e.g. compile 'com.mcxiaoke.volley:library:1.0.7'.

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

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

一切都准备好了。这可能看起来并非如此,因为默认的 Project Architecture 视图 (File -> Project Structure)没有显示 libs目录。要查看它,您需要使用 ProjectArchitecture 视图上方的 spinner 将 Android更改为 Project

你可以通过构建应用程序(可能不是必需的)来看到它的工作原理,然后开始输入一些代码,如下:

 RequestQueue request

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

它也很容易得到一个调试 aar 构建,如果这是你的喜好。

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

然后在另一个目录中创建一个新的 Android 工作室项目(只是一个普通的应用程序项目)。完成后,添加一个新的子模块(File | New Module)。选择导入现有的项目选项,并将其指向您签出 volley 的目录。一旦这样做,您可以使您的模块,它将创建一个 aar 文件。

使用 Eclipse Luna 你必须:

  • 从 GIT 克隆出来的。
  • 剪切(复制和删除)文件夹下的 JAVA 文件夹到下面的 SRC 文件夹像在常规的 Android 项目。
  • 将 project.properties 目标更改为15,而不是8。
  • 建造这个项目。
  • 将项目导出为包含源代码的 jar 文件-使用导出工具。
  • 在导出的 jar 中只保留 COM 文件夹和 META-INF 文件夹,删除其他所有文件夹-使用压缩工具删除 jar 中的内容。
  • use this jar as your Volley jar project.
  • 将 Volley jar 放在目标 Android 项目的 lib 文件夹中。

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

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

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

Volley can be added as a git submodule in your current project repo. 这个 git 子模块将指向 Volley 的官方 git 回购。 因此,只需更新子模块,就可以从官方 git repo 获得更新 指针。

更进一步,如果你添加截击作为一个库模块在您的主 你可以很容易地自定义它。它将非常有用的调试 目的也一样。

为了实现这一目标,需要采取以下步骤:

Step I :

在 Android 应用程序项目 GIT Repo 中添加截击作为子模块。 Git 子模块 add-b master https://android.googlesource.com/platform/frameworks/volley Library/Volley

第二步:

在 setings.gradle 中,添加以下内容以添加 volley 作为工作室项目模块。 包括: 齐射 Project (’: Volley’) . projectDir = new File (’. ./Library/Volley’)

第三步:

在 app/build.gradle 中,添加以下代码行来编译 Volley 编译项目(’: Volley’)

这就是全部! 截击已经成功地添加到项目中。

每次你想从谷歌官方得到最新的代码 Volley's repo, just run the below command

git submodule foreach git pull

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

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

给未来的读者

I love to work with 齐射. To save development time i tried to write small handy library Gloxey 网络管理器 to setup Volley with my project. It includes JSON 解析器 and different other methods that helps to check network availability.

库提供了 ConnectionManager.class,其中提供了用于 排球线截击 JSON请求的不同方法。可以使用或不使用标头来发出 获取,放入,发布,删除请求。 You can read full documentation here.

把这一行写进你的档案里。

附属事项{

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

}