Perpustakaan Jaringan Android Volley


120

Saya memiliki beberapa pertanyaan seputar penggunaan Volley dalam proyek saya:

  1. Bisakah perpustakaan ini digunakan dalam proyek Java atau hanya Android?
  2. Saya melihat banyak cabang di sini dan tidak ada dokumentasi tentang cabang mana yang akan memulai. Cabang mana yang harus saya gunakan untuk memulai?
  3. Bagaimana Anda mengintegrasikan pustaka ini dalam proyek Anda sendiri? Pendekatan apa yang lebih baik: Jadikan Volley sebagai proyek perpustakaan mandiri dan putar stoples dan masukkan ke dalam proyek Anda atau salin semua kode sumber di dalam proyek Anda?

7
Kapanpun Anda melihat banyak cabang dalam repo git, Anda harus selalu berasumsi bahwa mereka ingin Anda mengkloning dan mulai menggunakan cabang master. Cabang lainnya adalah cabang sekunder.
IgorGanapolsky

Anda juga dapat menambahkan Volley sebagai submodul git. Penjelasan rinci: gitsubmoduleasandroidtudiomodule.blogspot.in
Arpit Ratan

Jawaban:


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

Kemudian, salin bin/volley.jarke libs/folder Anda dan pergilah!

sumber


8
CATATAN: Anda harus memperbaiki variabel PATH Anda untuk ini, untuk melakukan ini di linux lakukan hal berikut (di profil. Anda atau di mana pun Anda meletakkan variabel PATH): 1. ekspor ANDROID_HOME = <android-sdk-dir>
Johan S

104
Sungguh menakjubkan bahwa saya harus pergi ke 5 hasil google yang berbeda untuk menemukan petunjuk untuk menginstal perpustakaan jaringan mereka sendiri.
Gowiem

24
Pertanyaan Serius: Mengapa tidak ada unduhan langsung dari File Jar voli di mana saja? Apakah ada masalah dengan satu file JAR universal untuk itu?
PGMacDesign

5
Apakah ada orang lain yang mendapatkan "voli bukanlah proyek vaild (AndroidManifest.xml tidak ditemukan)
Ersen Osman

8
@ChintanSoni, ~ 3 bulan yang lalu, pengiriman git c9ef93a menyatakan "Migrasi dari Gradle ke Maven". Alih-alih menjalankan "android update -p.", Anda menjalankan perintah maven, "mvn compile", lalu "mvn package".
Jared Messenger

73

Dalam pelajaran Volley , Google menginstruksikan untuk menambahkan Volley ke proyek kita sebagai proyek Perpustakaan Android atau sebagai .jarfile.

Berikut cara membuat .jarfile Volley menggunakan Android Studio atau Eclipse :

CATATAN:

Dalam kedua kasus, saya sarankan untuk mengganti nama .jarfile ke tanggal komit terbaru Volley, yaitu volley_20150319.jar, agar versi tetap sederhana.


Android Studio:

  1. Kloning repositori Volley melalui Git.
  2. Impor proyek ke Android Studio. (Saya biasanya memilih file gradle proyek saat mengimpor di Android Studio)
  3. Bangun proyek. (Saya harus mengubah pengaturan build gradle untuk mencerminkan alat build dan versi gradle terbaru, tetapi biasanya selalu terbaru).
  4. Di file explorer Anda, navigasikan ke [your local path to volley]/build/intermediate/bundles/
  5. Di debugdanrelease folder Anda akan menemukan file JAR bernama classes.jar.
  6. Salin salah satu file JAR ke libs/ folder .
  7. Sinkronisasi Gradle, dan selesai.

Gerhana:

  1. Kloning repositori Volley melalui Git.
  2. Impor proyek ke dalam gerhana.
  3. Klik kanan proyek dan pilih Ekspor ...
  4. Pilih file Java / JAR .
  5. Kami hanya tertarik pada folder src dan tidak ada yang lain. Cara termudah untuk memastikan hanya itu yang dipilih adalah dengan membatalkan pilihan proyek dan kemudian memilih folder src di dalamnya.
  6. Centang opsi Ekspor file kelas dan sumber daya yang dihasilkan .
  7. OPSIONAL: Jika Anda ingin Javadoc terlihat, pilih juga sumber daya file sumber Ekspor Java .
  8. Buat file JAR dan taruh di libs/folder Anda .

1
Ini bagus. Tip paling penting bagi saya adalah # 5 (pilih hanya src), karena ini membantu dengan pustaka lain yang saya coba sertakan juga.
wblaschko

1
Anda menyelamatkan saya satu hari! "hanya periksa folder src " berfungsi untuk saya :)
Wooseong Kim

48

1) Apakah perpustakaan ini juga dapat digunakan sebagai perpustakaan jaringan dalam proyek Java normal juga ATAU hanya untuk Android saja

Ini hanya untuk Android, karena bergantung pada kelas khusus Android. Anda dapat mengetahui ini dengan melihat kode sumber, untuk hal - hal sepertiRequestQueue .

2) Saya melihat banyak cabang di sini dan tidak ada dokumentasi tentang cabang mana yang akan memulai. Cabang mana yang harus saya gunakan untuk memulai?

Instruksi dari presentasi Google I | O adalah untuk mengkloning gitrepo, yang akan menarik dari mastercabang secara default.

3) Bagaimana cara mengintegrasikan pustaka ini dalam proyek Anda sendiri? Pendekatan apa yang lebih baik: Jadikan Volley sebagai proyek perpustakaan mandiri dan putar stoples dan masukkan ke dalam proyek Anda atau Salin semua kode sumber di dalam proyek Anda?

Instruksi dari presentasi Google I | O adalah menambahkan kode sumber ke proyek Anda. Secara pribadi, saya menganggap ini sebagai pendekatan yang aneh.


Fatal: kesalahan jarak jauh: Access Denied (tidak tersedia di negara Anda)! Jika saya mengunduh jar dan menambahkan jar ke proyek saya, apakah itu berfungsi di negara saya? Atau bahkan bagaimana saya bisa mengunduh jar, tanpa mengkloningnya ?!
Dr. jacky

Ya, instruksi mereka tampaknya menyarankan penggunaan cabang 'master', tetapi saya merasa ini agak aneh mengingat master tampaknya secara aktif berubah. Mungkin lebih baik mencari cabang rilis terbaru.
Tom

41

Anda dapat mengunduh volley.jar

Sumber: AndroidHive

salin Volley.jarke libs

Kemudian

Klik kanan volley.jar ->Add As Library

masukkan deskripsi gambar di sini


4
Terima kasih banyak untuk ini. Semua orang hanya mengatakan 'salin toples ke folder lib Anda' dan kemudian berhenti di situ.
Hoser

cURL mengatakan toples ini belum diperbarui sejak 01 Mei 2014
yuval

Bagaimana dengan jar verson baru?
f470071

26

Perpustakaan Volley sekarang diterbitkan oleh Proyek Sumber Terbuka Android:

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

4
Pastikan Anda menghapus volley.jar dari folder libs Anda, jika ada di sana. Dan, hapus referensi ke volley.jar dari file app / build.gradle Anda.
Perak Sagely

16

UPDATE: Volley sekarang resmi dan tersedia melalui JCenter. Berikut cara mengimpornya:

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

CARA DEPRIKASIKAN:

Jika Anda menggunakan Gradle, Anda dapat mengimpor Volley dari sini .

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

Catatan

Ini adalah mirror tidak resmi (dengan beberapa perbaikan bug minor, lihat Changelog untuk detailnya.) Untuk library volley android , kode sumber akan menyinkronkan secara berkala dengan repositori volley resmi.


1
Di manakah file ini seharusnya?
Tash Pemhiwa

Jika Anda menggunakan Gradle untuk membangun aplikasi Anda, harus ada file build.gradle dalam proyek Anda. Jika Anda tidak menggunakan Gradle, lihat solusi lain yang diposting di sini.
C0D3LIC1OU5

1
Terima kasih, tapi maksud saya di mana di file build.gradle harus di atas?
Tash Pemhiwa

Seperti yang dikatakan The Metal Beard dalam komentarnya. Di dalam dependensi jika Anda sudah mendeklarasikannya. Jika tidak, nyatakan di akhir file, tetapi jangan sertakan di dalam tag android
Zsolt Boldizsár

2
CATATAN: Ini tidak resmi. Ini adalah cerminan dari repo Volley.
Itai Hanski

13

Banyak cara

Karena ada banyak jawaban tentang satu pendekatan, tetapi tidak ada yang membandingkan berbagai cara untuk memulai dan menjalankan tendangan voli, saya juga memasukkan dua sen saya. Jangan ragu untuk mengedit / meningkatkan jawaban ini juga.

Tambahkan sebagai perpustakaan - (solusi cepat)

  1. Unduh dari: androidhive
  2. Tempatkan di [MyProjectPath]/app/libs/folder Anda
  3. Di Android Studio right-clickdi atasnya dan pilihAdd As Library...

File sumber dari git - (solusi yang agak resmi)

  1. Unduh / instal klien git (jika Anda belum memilikinya di sistem Anda) (lihat lain melaluigit clone https://github.com/git/git ... sry buruk, tetapi tidak bisa menolak ^^)
  2. Menjalankan git clone https://android.googlesource.com/platform/frameworks/volley
  3. Salin comfolder dari dalam [path_where_you_typed_git_clone]/volley/srcke app/src/main/javafolder proyek Anda (atau integrasikan sebagai gantinya, jika Anda sudah memiliki folder com di sana !! ;-))

    File-file tersebut segera muncul di Android Studio. Untuk Eclipse Anda harus right-clickmembuka srcfoldernya dan menekan refresh(atau F5) terlebih dahulu.

    Melakukannya melalui git adalah apa yang secara resmi disarankan dalam tutorial android ( lihat di sini ).

Gradle melalui cermin "tidak resmi" - (solusi dinamis)

  1. Dalam src/build.gradlefile proyek Anda, tambahkan dependensi volley berikut:

        dependencies {
            compile fileTree(dir: 'libs', include: ['*.jar'])
            // ...
    
            compile 'com.mcxiaoke.volley:library:1.+'
        }
  2. Klik Try Againyang akan langsung muncul di bagian atas file, atau hanya Buildjika tidak

    "Keuntungan" utama di sini adalah, bahwa ini akan membuat versi up-to-date untuk Anda, sedangkan dalam dua kasus lainnya Anda harus memperbarui voli secara manual.

    Di sisi "downside" ini tidak resmi dari google, tapi cermin mingguan pihak ketiga.

    Tapi kedua poin ini, benar-benar berhubungan dengan apa yang Anda butuhkan / inginkan. Juga jika Anda tidak menginginkan pembaruan, cukup letakkan versi yang diinginkan di sana misalnya compile 'com.mcxiaoke.volley:library:1.0.7'.


11

Jika Anda menggunakan GIT untuk pengelolaan kode Anda sendiri, mengapa tidak menambahkannya sebagai submodul ke proyek ...

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

Dengan cara itu, saat basis kode Volley diperbarui, mudah untuk memperbarui ...

git submodule git pull

Anda dapat memperluas kelas Volley utama dalam proyek Anda sendiri untuk dimodifikasi, yang membuat Anda tidak perlu repot dengan pengkodean perubahan Anda setiap kali kerangka kerja Volley diperbarui.


Masalahnya adalah bahwa proyek voli tidak didefinisikan sebagai perpustakaan android.
Nicolas Lauquin

Anda harus mengatur Volley di IDE Anda sebagai perpustakaan.
Simon. Renungkan

Melakukan hal ini akan mengubah properti proyek sehingga submodul akan berstatus "diubah". Karena itu saya tidak ingin menggunakan solusi ini. Dengan proyek "didefinisikan dengan benar", saya akan menggunakan submodule tetapi tidak untuk Volley. Saya membuat toples Volley sejauh ini.
Nicolas Lauquin

1
Anda masih dapat menarik dari sumber Google saat mereka membuat perubahan. Jika Anda ingin mengubah kode mereka dan menyimpannya, kemudian mengkloningnya, membuat referensi repo lokal Anda dua remote yang berbeda, dan gunakan satu untuk menarik darinya, dan yang lainnya untuk mendorong kode yang ingin Anda simpan. Saya tidak yakin mengapa mengganggu Anda untuk memiliki submodul yang dimodifikasi, jika Anda menyimpan proyek Anda di mana saja, dan Anda mendorong dari proyek induk, tanpa melakukan submodul di mana pun, Anda masih akan mendorong referensi ke komit submodul saat Anda menambahkannya.
Simon. Renungkan

8

Berikut adalah Quickstart kecil untuk Permintaan Http Volley, Sangat mudah untuk diintegrasikan.

  • Anda membutuhkan aplikasi Volley RequestQueue lebar:

    1. private static RequestQueue reqQueue;

Anda bisa meletakkannya di kelas Aplikasi Anda dan membuatnya tersedia secara statis melalui getRequestQueue ().

  • Kemudian Anda sudah bisa menggunakan metode RequestQueue.add () untuk menjalankan permintaan pertama dengan Volley.

    2. reqQueue.add(...)
  • Gunakan JsonObjectRequest untuk membuat kueri untuk satu objek, gunakan JsonArrayRequest untuk membuat kueri daftar objek.

    queue.add(new JsonArrayRequest(URL, new Listener<JSONArray>() {
    
        @Override
        public void onResponse(JSONArray response) {
            //SUCCESS
        }}, new ErrorListener() {
    
        @Override
        public void onErrorResponse(VolleyError error) {
            //ERROR
        }}));
  • Ingatlah untuk mengatur header Http Expires dengan benar di sisi server Anda sehingga Volley dapat menggunakan fitur caching terintegrasi itu


2
Sebelum menggunakan api RequestQueue, Anda perlu menambahkan perpustakaan ini ke proyek Anda ...
IgorGanapolsky

2

Berikut cara lain dengan Android Studio ang Gradle:

Anda memerlukan yang berikutnya dalam build.gradle proyek Anda (di tingkat struktur aplikasi Anda):

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

Ide buruk untuk melakukan ini. Perpustakaan di sana berumur 1 tahun. Dan ragu itu akan diperbarui ;-)
Patrick Boos

1

Pertama, klon proyek dari Git

$git clone https://android.googlesource.com/platform/frameworks/volley
  • impor voli di gerhana.
  • Klik kanan pada proyek Anda-> Properti-> android
  • Tambahkan perpustakaan-> pilih voli (jika Anda tidak melihat voli di sana, klik kanan perpustakaan voli, goto properti dan android dan klik perpustakaan)
  • setelah Anda menambahkan voli sebagai perpustakaan, Anda dapat mulai menggunakannya dalam aplikasi Anda.

Beberapa kelas dasar voli yang harus Anda ketahui adalah

  • RequestQueue
  • JsonArrayRequest
  • JsonObjectRequest

Untuk menggunakan voli terlebih dahulu Anda perlu membuat objek RequestQueue

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

Kedua -> buat Permintaan menggunakan JsonArrayRequest atau 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

                }
            });

dan akhirnya memasukkan permintaan ke dalam antrian. yaitu

mQueue.add(mJsonRequest);

Saya juga menyarankan Anda untuk membuat Singleton RequestQuery.


1

Menambahkan toples Volley (atau toples apa pun) ke Android Studio 1.0.2 sekarang jauh lebih mudah. Dari luar Android Studio, salin volley.jarke <yourproject>/app/libs(yang seharusnya sudah ada). Karena penyiapan Gradle default menyertakan baris ini:

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

... semuanya sekarang sudah siap. Tampaknya tidak demikian karena tampilan Project Structure default (File -> Project Structure)tidak menampilkan libsdirektori. Untuk melihatnya, Anda perlu menggunakan spinner tepat di atas Proyek Struktur pandangan untuk perubahan Androidke Project.

Anda dapat melihat bahwa itu berfungsi dengan membangun aplikasi (mungkin tidak diperlukan), lalu mulai mengetik beberapa kode seperti ini:

 RequestQueue request

Anda akan melihat bahwa Android Studio meminta Anda menyelesaikannya RequestQueue (com.android.volley).


1

Ini juga cukup mudah untuk membangun debug aar jika itu preferensi Anda.

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

Kemudian buat proyek studio Android baru (hanya proyek aplikasi biasa) di direktori yang berbeda. Setelah selesai, tambahkan submodul baru (File | New Module). Pilih opsi impor proyek yang ada dan arahkan ke direktori tempat Anda memeriksa voli. Setelah itu selesai Anda dapat membuat modul Anda dan itu akan membuat file aar.


1

Menggunakan eclipse Luna Anda harus:

  • mengkloningnya dari GIT.
  • potong (salin & hapus) folder COM di bawah folder JAVA ke bawah folder SRC seperti di proyek Android biasa.
  • ubah target project.properties menjadi 15, bukan 8.
  • membangun proyek.
  • ekspor proyek sebagai file jar termasuk sumber - gunakan alat ekspor.
  • simpan di jar yang diekspor hanya folder COM dan folder META-INF, hapus semua folder lainnya - gunakan alat zip untuk menghapus konten dari jar.
  • gunakan tabung ini sebagai proyek tabung Volley Anda.
  • letakkan tabung Volley di folder lib proyek Android tujuan Anda.

1

Jika Anda menggunakan Android Studio, Anda harus meletakkan baris ini di file gradle

compile 'com.mcxiaoke.volley:library:1.0.15'

Jika Anda ingin menggunakan metode GET, Anda harus memiliki sesuatu seperti itu.

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);
}

Tetapi jika Anda ingin memposting data di server, maka Anda harus membuat pustaka HashMap dan Volley mengonversi nilai kunci / pasangan tersebut menjadi objek JSON sebelum mempostingnya di server. Berikut ini contohnya.

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

Saya mengkloning proyek Volley dan menambahkan file konfigurasi yang memungkinkan pembuatan perpustakaan dengan Gradle.

Dengan ini, Anda dapat menginstal library ke dalam repositori Maven lokal dan mereferensikannya dari project Android melalui Gradle.

Persyaratan

  1. Maven
  2. Gradle

Cara Penggunaan

  1. Gandakan repositori saya
  2. Bangun dan instal perpustakaan Volley
  3. Referensi perpustakaan dalam proyek Android

Perbaikan kerusakan

Harap diingat bahwa ada berbagai klon di luar sana yang memiliki peningkatan untuk perpustakaan . Mungkin perlu untuk mengintegrasikannya dan mengkompilasi versi perpustakaan pribadi Anda yang ditingkatkan.

Manfaat

Selain pustaka itu sendiri, skrip build menghasilkan JavaDoc dan arsip sumber .


0

Saya menghadapi masalah ketika pustaka dukungan terdaftar di baris kedua. Menyusun ulang kedua pernyataan ini berhasil bagi saya.

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

0

Volley dapat ditambahkan sebagai submodul git di repo proyek Anda saat ini. Submodul git ini akan mengarah ke repo git resmi Volley. Karenanya Anda bisa mendapatkan pembaruan dari git repo resmi hanya dengan memperbarui penunjuk submodule.

Lebih jauh lagi jika Anda menambahkan Volley sebagai Modul Perpustakaan di proyek utama Anda, Anda dapat dengan mudah menyesuaikannya. Ini akan sangat berguna untuk tujuan debugging juga.

Untuk mencapai ini ikuti langkah-langkah di bawah ini:

Langkah I:

Tambahkan voli sebagai submodul dalam proyek aplikasi Android GIT Repo. git submodule add -b master https://android.googlesource.com/platform/frameworks/volley Libraries / Volley

Langkah II:

Di settings.gradle, tambahkan berikut ini untuk menambahkan voli sebagai modul proyek studio. termasuk proyek ': Volley' (': Volley'). projectDir = File baru ('../ Libraries / Volley')

Langkah III:

Di app / build.gradle, tambahkan baris berikut untuk menyusun proyek kompilasi Volley (': Volley')

Itu saja! Volley berhasil ditambahkan dalam proyek.

Setiap kali Anda ingin mendapatkan kode terbaru dari repo resmi Google Volley, jalankan saja perintah di bawah ini

git submodule foreach git pull

Untuk informasi lebih rinci: https://gitsubmoduleasandroidtudiomodule.blogspot.in/

Kode contoh GIT Repo: https://github.com/arpitratan/AndroidGitSubmoduleAsModule


0

Untuk Pembaca Masa Depan

Saya suka bekerja dengan Volley . Untuk menghemat waktu pengembangan saya mencoba menulis perpustakaan kecil yang berguna Gloxey Netwok Manager untuk mengatur Volley dengan proyek saya. Ini termasuk parser JSON dan metode lain yang membantu untuk memeriksa ketersediaan jaringan.

Library menyediakan ConnectionManager.classmetode berbeda untuk permintaan Volley String dan Volley JSON . Anda dapat membuat permintaan GET, PUT, POST, DELETE dengan atau tanpa header. Anda dapat membaca dokumentasi lengkapnya di sini .

Letakkan baris ini di file gradle Anda.

ketergantungan {

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

}

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.