簡體   English   中英

排球Android網絡庫

[英]Volley Android Networking Library

關於在我的項目中使用Volley,我幾乎沒有問題:

  1. 這個庫可以用在任何Java項目中,還是只用於Android?
  2. 在這里看到多個分支,沒有關於哪個分支開始的文檔。 我應該從哪個分支開始?
  3. 如何將此庫集成到您自己的項目中? 什么方法更好:將Volley作為一個獨立的庫項目並旋轉一個jar並將其放入項目中或復制項目中的所有源代碼?
$ git clone https://android.googlesource.com/platform/frameworks/volley
$ cd volley
$ android update project -p .
$ ant jar

然后,將bin/volley.jar復制到你的libs/文件夾中,然后離開!

資源

Volley課程中 ,Google指示將Volley作為Android Library項目添加到我們的項目中,或者添加為.jar文件。

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

注意:

在這兩種情況下,我建議將.jar文件重命名為Volley最新提交的日期,即volley_20150319.jar ,以保持版本簡單。


Android Studio:

  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 sync,你已經完成了。

日食:

  1. 通過Git克隆Volley存儲庫。
  2. 將項目導入eclipse。
  3. 右鍵單擊該項目,然后選擇導出...
  4. 選擇Java / JAR文件
  5. 我們只對src文件夾感興趣而沒有別的。 確保只選擇它的最簡單方法是取消選擇項目,然后選擇里面的src文件夾。
  6. 檢查“ 導出生成的類文件和資源”選項。
  7. 可選:如果要顯示Javadoc,請選擇“ 導出Java源文件資源”
  8. 創建JAR文件並將其放在libs/文件夾中。

1)此庫是否也可用作普通Java項目中的網絡庫,或者它是否僅適用於Android

它僅適用於Android,因為它取決於特定於Android的類。 對於RequestQueue這樣的東西,您可以通過查看源代碼來說明這一點。

2)我在這里看到多個分支,沒有關於哪個分支開始的文檔。 我應該從哪個分支開始?

來自Google I | O演示文稿的說明只是克隆git repo,默認情況下會從master分支中提取。

3)如何將此庫集成到您自己的項目中? 更好的方法是:將Volley作為一個獨立的庫項目並旋轉一個jar並將其放入項目中或復制項目中的所有源代碼?

Google I | O演示文稿中的說明是將源代碼添加到您的項目中。 就個人而言,我發現這是一種奇怪的方法。

你可以下載volley.jar

資料來源: AndroidHive

Volley.jar復制到libs

然后

右鍵單擊volley.jar ->添加為庫

在此輸入圖像描述

Volley庫現在由Android開源項目發布:

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

更新: Volley現已正式上線,可通過JCenter獲得。 以下是如何導入它:

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

犧牲方式:

如果您正在使用Gradle,則可以從此處導入Volley。

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

注意

這是一個非官方的鏡像(有一些小錯誤修正,詳情見Changelog 。)對於android volley庫 ,源代碼會定期與官方的volley存儲庫同步。

有很多方法

由於關於單一方法有很多答案,但沒有一個比較不同的方式來獲得凌空運行,我也把我的兩分錢投入。隨意編輯/增強這個答案。

將其添加為庫 - (快速解決方案)

  1. 從以下網址下載: androidhive
  2. 將它放在[MyProjectPath]/app/libs/文件夾中
  3. 在Android Studio中right-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. [path_where_you_typed_git_clone]/volley/srccom文件夾復制到項目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 it

    這里的主要“優勢”是,這將使版本保持最新,而在另外兩種情況下,您將不得不手動更新凌空。

    在“缺點”,它不是正式來自谷歌,而是第三方每周鏡像。

    但是這兩點都與你需要/想要的相關。 此外,如果您不想更新,只需將所需的版本放在那里,例如compile 'com.mcxiaoke.volley:library:1.0.7'

如果您使用GIT進行自己的代碼管理,為什么不簡單地將它作為子模塊添加到項目...

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

這樣,隨着Volley代碼庫的更新,更新很簡單......

git submodule git pull

您可以在自己的項目中擴展主要的Volley類進行修改,這樣您就不必每次更新Volley框架時都要編寫更改。

這是一個針對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可以利用它的集成緩存功能

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

首先從Git克隆項目

$git clone https://android.googlesource.com/platform/frameworks/volley
  • 在日食中輸入截擊。
  • 右鍵單擊您的項目 - > Property-> android
  • 添加庫 - >選擇排球(如果你沒有看到凌空那里,rigth點擊排球庫,goto屬性和android並點擊庫)
  • 將volley添加為庫后,您可以在應用程序中開始使用它。

你應該知道的一些基本排球類

  • 請求隊列
  • 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);

另外我建議你制作一個SingleQuery的RequestQuery。

向Android Studio 1.0.2添加Volley jar(或任何jar)現在變得相當容易。 從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)

如果這是你的偏好,它也很容易得到調試aar。

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

然后在另一個目錄中創建一個新的Android工作室項目(只是一個常規應用程序項目)。 完成后,添加一個新的子模塊(文件|新模塊)。 選擇導入現有項目選項,並將其指向您檢出凌空的目錄。 完成后,您可以創建模塊,它將創建一個aar文件。

使用eclipse Luna你必須:

  • 從GIT克隆它。
  • 剪切(復制和刪除)JAVA文件夾下的文件夾COM到常規Android項目中的SRC文件夾下面。
  • 將project.properties目標更改為15而不是8。
  • 建立項目。
  • 將項目導出為包含源的jar文件 - 使用導出工具。
  • 在導出的jar中只保留COM文件夾和META-INF文件夾,刪除所有其他文件夾 - 使用zip工具刪除jar的內容。
  • 使用這個jar作為你的Volley jar項目。
  • 將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項目並添加了配置文件,這些文件允許使用Gradle構建庫。

有了這個,您可以將庫安裝到本地Maven存儲庫中,並通過Gradle從Android項目中引用它。

要求

  1. Maven的
  2. 搖籃

如何使用

  1. 克隆我的存儲庫
  2. 構建並安裝Volley庫
  3. 在Android項目中引用庫

Bug修復

請記住,有各種克隆,其中有圖書館的改進 可能需要集成它們並編譯您的私有增強版本的庫。

優點

除了庫本身,構建腳本還會生成JavaDoc源存檔

當支持庫列在第二行時,我遇到了問題。 重新排序這兩個陳述對我有用。

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

Volley可以作為當前項目回購中的git子模塊添加。 這個git子模塊將指向Volley的官方git repo。 因此,您只需更新子模塊指針即可從官方git倉庫獲取更新。

如果您在主項目中將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編譯項目(':Volley')

那將是全部! Volley已成功加入該項目。

每當您想從Google官方Volley的回購中獲取最新代碼時,只需運行以下命令即可

git submodule foreach git pull

有關更多詳細信息,請訪問: https//gitsubmoduleasandroidtudiomodule.blogspot.in/

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

對於未來的讀者

我喜歡和Volley一起工作。 為了節省開發時間,我嘗試編寫小型方便的庫Gloxey Netwok Manager來設置我的項目Volley。 它包括JSON解析器和有助於檢查網絡可用性的其他不同方法。

Library提供了ConnectionManager.class ,其中提供了Volley StringVolley JSON請求的不同方法。 您可以使用或不使用標頭發GET,PUT,POST,DELETE請求。 您可以在此處閱讀完整文檔。

只需將此行放在gradle文件中即可。

依賴{

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

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM