[英]Volley Android Networking Library
關於在我的項目中使用Volley,我幾乎沒有問題:
$ 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 Studio或Eclipse創建Volley .jar
文件的方法:
注意:
在這兩種情況下,我建議將.jar
文件重命名為Volley最新提交的日期,即volley_20150319.jar
,以保持版本簡單。
[your local path to volley]/build/intermediate/bundles/
debug
和release
文件夾中,您將找到名為classes.jar
的JAR文件。 libs/
文件夾中。 libs/
文件夾中。 1)此庫是否也可用作普通Java項目中的網絡庫,或者它是否僅適用於Android
它僅適用於Android,因為它取決於特定於Android的類。 對於像RequestQueue
這樣的東西,您可以通過查看源代碼來說明這一點。
2)我在這里看到多個分支,沒有關於哪個分支開始的文檔。 我應該從哪個分支開始?
來自Google I | O演示文稿的說明只是克隆git
repo,默認情況下會從master
分支中提取。
3)如何將此庫集成到您自己的項目中? 更好的方法是:將Volley作為一個獨立的庫項目並旋轉一個jar並將其放入項目中或復制項目中的所有源代碼?
Google I | O演示文稿中的說明是將源代碼添加到您的項目中。 就個人而言,我發現這是一種奇怪的方法。
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存儲庫同步。
由於關於單一方法有很多答案,但沒有一個比較不同的方式來獲得凌空運行,我也把我的兩分錢投入。隨意編輯/增強這個答案。
[MyProjectPath]/app/libs/
文件夾中 right-click
它並選擇Add As Library...
git clone https://github.com/git/git
... sry bad one,但無法抗拒^^) git clone https://android.googlesource.com/platform/frameworks/volley
將[path_where_you_typed_git_clone]/volley/src
的com
文件夾復制到項目app/src/main/java
文件夾中(或者將其集成,如果你已經有一個com文件夾!! ;-))
這些文件會立即顯示在Android Studio中。 對於Eclipse,您必須right-click
src
文件夾並先按下refresh
(或F5
)。
通過git做這個是在android教程中正式建議的( 看這里 )。
在項目的src/build.gradle
文件中添加以下齊射依賴項:
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) // ... compile 'com.mcxiaoke.volley:library:1.+' }
點擊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
你應該知道的一些基本排球類
要首先使用排球,您需要創建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你必須:
如果您使用的是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項目中引用它。
請記住,有各種克隆,其中有圖書館的改進 。 可能需要集成它們並編譯您的私有增強版本的庫。
除了庫本身,構建腳本還會生成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 String和Volley JSON請求的不同方法。 您可以使用或不使用標頭發出GET,PUT,POST,DELETE請求。 您可以在此處閱讀完整文檔。
只需將此行放在gradle文件中即可。
依賴{
compile 'io.gloxey.gnm:network-manager:1.0.1'
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.