Сетевая библиотека Android Volley

120

У меня есть несколько вопросов по использованию Volley в моих проектах:

  1. Можно ли использовать эту библиотеку в любом проекте Java или только в Android?
  2. Я вижу здесь несколько веток и нет документации, с какой ветки начинать. С какой ветки мне начать?
  3. Как интегрировать эту библиотеку в свой собственный проект? Какой подход лучше: сделать Volley автономным библиотечным проектом, развернуть банку и поместить ее в свой проект или скопировать весь исходный код внутри вашего проекта?
Бьянка
источник
7
Всякий раз, когда вы видите несколько веток в репозитории git, вы всегда должны предполагать, что они хотят, чтобы вы клонировали и начали использовать основную ветку. Любая другая ветвь вторична.
Игорь Ганапольский
Вы также можете добавить Volley в качестве подмодуля git. Подробное объяснение: gitsubmoduleasandroidtudiomodule.blogspot.in
Arpit Ratan

Ответы:

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

Затем скопируйте bin/volley.jarв свою libs/папку и вперед!

источник

Kevin
источник
8
ПРИМЕЧАНИЕ. Для этого вам нужно будет исправить свою переменную PATH, чтобы сделать это в linux, сделайте следующее (в вашем .profile или где бы вы ни поместили переменные PATH): 1. export ANDROID_HOME = <android-sdk-dir>
Johan S
104
Удивительно, что мне пришлось просмотреть 5 разных результатов Google, чтобы найти инструкции по установке их собственной сетевой библиотеки.
Gowiem
24
Серьезный вопрос: почему нигде нет прямой загрузки файла Volley Jar? Есть какие-то проблемы с одним универсальным JAR-файлом для него?
PGMacDesign
5
У кого-нибудь еще есть «залп - это не официальный проект (AndroidManifest.xml не найден)»
Эрсен Осман
8
@ChintanSoni, ~ 3 месяца назад в представлении git c9ef93a говорится: «Переходите с Gradle на Maven». Вместо запуска «android update -p.» Вы запускаете команды maven, «mvn compile», а затем «mvn package».
Джаред Мессенджер,
73

На уроке Volley Google дает указание добавить Volley в наш проект как проект библиотеки Android или как .jarфайл.

Вот как создать .jarфайл Volley с помощью Android Studio или Eclipse :

НОТА:

В обоих случаях я предлагаю переименовать .jarфайл, указав дату последней фиксации Volley, то есть volley_20150319.jar, чтобы упростить управление версиями.


Android Studio:

  1. Клонируйте репозиторий Volley через Git.
  2. Импортируйте проект в Android Studio. (Обычно я выбираю файл Gradle проекта при импорте в Android Studio)
  3. Постройте проект. (Мне пришлось изменить настройки сборки Gradle, чтобы отразить последние инструменты сборки и версию Gradle, но обычно она актуальна).
  4. В проводнике файлов перейдите к [your local path to volley]/build/intermediate/bundles/
  5. В обоих debugи releaseпапки , которые вы найдете файл JAR с именем classes.jar.
  6. Скопируйте любой файл JAR в свою libs/папку.
  7. Синхронизация Gradle, и все готово.

Затмение:

  1. Клонируйте репозиторий Volley через Git.
  2. Импортируйте проект в eclipse.
  3. Щелкните проект правой кнопкой мыши и выберите Экспорт ...
  4. Выберите файл Java / JAR .
  5. Нас интересует только папка src и больше ничего. Самый простой способ убедиться, что выбран только он, - отменить выбор проекта и затем выбрать папку src внутри.
  6. Установите флажок Экспорт сгенерированных файлов классов и ресурсов .
  7. ДОПОЛНИТЕЛЬНО: Если вы хотите, чтобы Javadoc был видимым, также выберите Экспорт ресурсов исходных файлов Java .
  8. Создайте файл JAR и поместите его в свою libs/папку.
Итаи Хански
источник
1
Это круто. Самым важным советом для меня был № 5 (выберите только src), так как это помогло и с другими библиотеками, которые я пытался включить.
wblaschko 02
1
Вы сэкономите мне день! «Только проверьте папку src » работает для меня :)
Усонг Ким
48

1) Может ли эта библиотека также использоваться как сетевая библиотека в обычных проектах Java, ИЛИ строго для Android Только

Это только для Android, так как это зависит от классов, специфичных для Android. Вы можете сказать это, посмотрев исходный код, напримерRequestQueue .

2) Я вижу здесь несколько веток и нет документации, с какой ветки начинать. С какой ветки мне начать?

Инструкции из презентации Google I | O заключались в том, чтобы просто клонировать gitрепо, которое masterпо умолчанию будет извлекать из ветки.

3) Как интегрировать эту библиотеку в собственный проект? Какой подход лучше: сделать Volley автономным библиотечным проектом, развернуть банку и поместить ее в свой проект или скопировать весь исходный код в свой проект?

Инструкции из презентации Google I | O заключались в том, чтобы добавить исходный код в ваш проект. Лично я считаю это странным подходом.

CommonsWare
источник
Неустранимая ошибка: удаленная ошибка: отказано в доступе (недоступно в вашей стране)! Если я загружу jar и добавлю jar в свой проект, будет ли это работать в моей стране? Или еще как скачать jar, не клонируя ?!
Доктор Джеки
Да, их инструкции, похоже, предлагают использовать ветку master, но я нахожу это немного странным, учитывая, что master, похоже, активно меняется. Возможно, лучше будет найти ветку последней версии.
Tom
41

вы можете скачать volley.jar

Источник: AndroidHive

скопируйте Volley.jarв библиотеки

затем

Щелкните правой кнопкой мыши " volley.jar ->Добавить как библиотеку"

введите описание изображения здесь

Мина Габриэль
источник
4
Спасибо тебе большое за это. Все просто говорят: «Скопируйте банку в папку с библиотекой» и оставьте все как есть.
Hoser
cURL говорит, что этот jar не обновлялся с 1 мая 2014 г.
yuval
Как насчет новой jar verson?
f470071 06
26

Библиотека Volley теперь публикуется Android Open Source Project:

dependencies {
    implementation 'com.android.volley:volley:1.1.0'
}
Сэм Стерн
источник
4
Убедитесь, что вы удалили volley.jar из папки libs, если она у вас есть. И удалите ссылку на volley.jar из файла app / build.gradle.
Silver Sagely
16

ОБНОВИТЬ: Volley теперь является официальным и доступен через JCenter. Вот как это импортировать:

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

ДЕПРИКАЦИОННЫЙ СПОСОБ:

Если вы используете Gradle, вы можете импортировать Volley отсюда .

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

Заметка

Это неофициальное зеркало (с некоторыми незначительными исправлениями, подробности см. В Журнале изменений ) для библиотеки android volley , исходный код будет периодически синхронизироваться с официальным репозиторием volley.

C0D3LIC1OU5
источник
1
Где это должно быть в файле?
Таш Пемхива
Если вы используете Gradle для создания своего приложения, в вашем проекте должен быть файл build.gradle. Если вы не используете Gradle, ознакомьтесь с другими решениями, размещенными здесь.
C0D3LIC1OU5
1
Спасибо, но я имел в виду, где в файле build.gradle должно быть указанное выше?
Таш Пемхива,
Как заявил в своем комментарии The Metal Beard. Внутри зависимостей, если они у вас уже объявлены. Если нет, объявите его в конце файла, но не включайте в тег Android
Жолт Болдизар
2
ПРИМЕЧАНИЕ: это не официально. Это зеркало репо Volley.
Итаи Хански
13

Множество способов

Поскольку есть много ответов об одном подходе, но ни один из них не сравнивает различные способы запуска и запуска залпа, я также вложил свои два цента. Не стесняйтесь редактировать / улучшать и этот ответ.

Добавить как библиотеку - (быстрое решение)

  1. Загрузите его с: androidhive
  2. Поместите это в свой [MyProjectPath]/app/libs/ папку
  3. В Android Studio right-clickна нем и выбираемAdd As Library...

Исходные файлы из git - (довольно официальное решение)

  1. Загрузите / установите клиент git (если он еще не установлен в вашей системе) (в противном случае через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 вам нужно будет сначала зайти right-clickв srcпапку и нажать refresh(или F5).

    Делать это через git - это то, что официально предлагается в руководствах по Android (см. Здесь ).

Gradle через "неофициальное" зеркало - (динамическое решение)

  1. В src/build.gradleфайле вашего проекта добавьте следующую зависимость от залпа:

        dependencies {
            compile fileTree(dir: 'libs', include: ['*.jar'])
            // ...
    
            compile 'com.mcxiaoke.volley:library:1.+'
        }
  2. Нажмите на то, Try Againчто должно сразу появиться в верхней части файла, или просто на Buildнего, если нет

    Основное «преимущество» здесь в том, что это позволит поддерживать актуальную версию для вас, тогда как в двух других случаях вам придется вручную обновлять залп.

    С другой стороны, это официально не Google, а стороннее еженедельное зеркало.

    Но оба эти момента действительно относятся к тому, что вам нужно / нужно. Также, если вы не хотите обновлений, просто поместите туда желаемую версию, например compile 'com.mcxiaoke.volley:library:1.0.7'.

левит
источник
11

Если вы используете GIT для управления собственным кодом, почему бы просто не добавить его в качестве подмодуля в проект ...

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

Таким образом, по мере обновления базы кода Volley обновлять просто ...

git submodule git pull

Вы можете расширить основной класс Volley в своем собственном проекте для модификации, что избавит вас от необходимости возиться с кодированием ваших изменений каждый раз при обновлении инфраструктуры Volley.

Simon.Ponder
источник
Проблема в том, что проект volley не определен как библиотека android.
Nicolas Lauquin
Вы должны установить Volley в своей среде IDE как библиотеку.
Simon.Ponder
Это приведет к изменению свойства проекта, поэтому подмодуль будет в состоянии «изменен». По этой причине я не хочу использовать это решение. Если бы проект был «правильно определен», я бы использовал подмодуль, но не для Volley. Я пока создал банку Volley.
Nicolas Lauquin
1
Вы все еще можете извлекать из источника Google, когда они вносят изменения. Если вы хотите изменить их код и сохранить его, затем клонируйте его, сделайте в своем локальном репо ссылку на два разных пульта и используйте один для извлечения из них, а другой для отправки кода, который вы хотите сохранить. Я не уверен, почему вас беспокоит наличие измененного подмодуля, если вы храните свой проект где угодно и нажимаете из родительского проекта, без фиксации подмодуля в любом месте, вы все равно будете нажимать ссылку на фиксацию подмодуля когда вы его добавили.
Simon.Ponder
8

Вот небольшой быстрый старт для Http-запроса Volley, его очень легко интегрировать.

  • Вам нужна широкая программа 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 мог использовать встроенную функцию кэширования.


источник
2
Перед использованием RequestQueue api, вам необходимо добавить эту библиотеку в свой проект ...
Игорь Ганапольский
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.+'
}
Sotti
источник
Плохая идея делать это. Этой библиотеке там 1 год. И сомневаюсь, что он будет обновлен ;-)
Патрик Боос
1

Сначала клонируйте проект из Git

$git clone https://android.googlesource.com/platform/frameworks/volley
  • импортный залп в затмении.
  • Щелкните правой кнопкой мыши свой проект-> Свойство-> android
  • Добавить библиотеку-> выбрать залп (если вы не видите залп там, библиотека залпового огня с правом щелчка, свойство goto и библиотека android и click)
  • после того, как вы добавите залп в качестве библиотеки, вы можете начать использовать его в своем приложении.

Вы должны знать несколько основных классов залпа:

  • RequestQueue
  • JsonArrayRequest
  • JsonObjectRequest

Чтобы сначала использовать залп, вам нужно создать объект 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);

Также я предлагаю вам сделать Singleton из RequestQuery.

user98239820
источник
1

Добавить банку Volley (или любую другую) в 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).

Брайан Марик
источник
1

Также довольно легко получить отладочный файл, если вы этого хотите.

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

Затем создайте новый проект студии Android (просто проект обычного приложения) в другом каталоге. Как только это будет завершено, добавьте новый подмодуль (File | New Module). Выберите вариант импорта существующего проекта и укажите в нем каталог, в котором вы зарегистрировали залп. Как только это будет сделано, вы можете создать свой модуль, и он создаст файл aar.

Крис
источник
1

Используя eclipse Luna, вы должны:

  • клонируйте его из GIT.
  • вырезать (скопировать и удалить) папку COM в папке JAVA до папки SRC, как в обычном проекте Android.
  • измените цель project.properties на 15 вместо 8.
  • построить проект.
  • экспортировать проект как файл jar, включая исходный - используйте инструмент экспорта.
  • сохраните в экспортированной банке только папку COM и папку META-INF, удалите все остальные папки - используйте инструмент zip для удаления содержимого банки.
  • используйте эту банку как свой проект Volley jar.
  • поместите банку Volley в папку lib вашего целевого проекта Android.
Ярон Ронен
источник
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);
 }
Тео
источник
0

Я клонировал проект Volley и добавил файлы конфигурации, которые позволяют создавать библиотеку с помощью Gradle.

С его помощью вы можете установить библиотеку в свой локальный репозиторий Maven и ссылаться на нее из проекта Android через Gradle.

Требования

  1. специалист
  2. Gradle

Как пользоваться

  1. клон мой репозиторий
  2. Соберите и установите библиотеку Volley
  3. Ссылка на библиотеку в проекте Android

Исправление ошибок

Имейте в виду, что существуют различные клоны, в которых есть улучшения для библиотеки. . Возможно, потребуется интегрировать их и скомпилировать вашу частную расширенную версию библиотеки.

Преимущества

В дополнение к самой библиотеке сценарий сборки генерирует JavaDoc и архивы исходных текстов .

JJD
источник
0

У меня возникла проблема, когда во второй строке была указана библиотека поддержки. Изменение порядка этих двух утверждений сработало для меня.

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.mcxiaoke.volley:library:1.0.6'
    compile 'com.android.support:support-v4:20.+'
}
Субраманья Шешадри
источник
0

Volley можно добавить как подмодуль git в репозиторий текущего проекта. Этот подмодуль git будет указывать на официальный репозиторий git Volley. Следовательно, вы можете получать обновления из официального репозитория git, просто обновив указатель подмодуля.

Более того, если вы добавите Volley в качестве библиотечного модуля в свой основной проект, вы можете легко настроить его. Это также будет очень полезно для отладки.

Для этого выполните следующие действия:

Шаг I:

Добавьте залп как подмодуль в проект приложения Android GIT Repo. git submodule add -b master https://android.googlesource.com/platform/frameworks/volley Libraries / Volley

Шаг II:

В settings.gradle добавьте следующее, чтобы добавить залп в качестве модуля студийного проекта. включить проект ': Volley' (': Volley'). projectDir = new File ('../ Libraries / Volley')

Шаг III:

В app / build.gradle добавьте следующую строку для компиляции проекта компиляции Volley (': Volley')

Вот и все! Volley успешно добавлен в проект.

Каждый раз, когда вы хотите получить последний код из официального репозитория Google Volley, просто выполните следующую команду

git submodule foreach git pull

Для более подробной информации: https://gitsubmoduleasandroidtudiomodule.blogspot.in/

Пример кода GIT Repo: https://github.com/arpitratan/AndroidGitSubmoduleAsModule

Арпит Ратан
источник
0

Для будущих читателей

Я люблю работать с Volley . Чтобы сэкономить время разработки, я попытался написать небольшую удобную библиотеку Gloxey Netwok Manager для установки Volley с моим проектом. Включает парсер JSON и различные другие методы, которые помогают проверить доступность сети.

Библиотека предоставляет ConnectionManager.classразличные методы для запросов Volley String и Volley JSON . Вы можете делать запросы GET, PUT, POST, DELETE с заголовком или без него. Вы можете прочитать полную документацию здесь .

Просто поместите эту строку в свой файл gradle.

dependencies {

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

}

Аднан Бин Мустафа
источник