在Android開發中,經常要通過HTTP請求訪問網路。為了使通過HTTP請求訪問網路的過程更加簡單,2013年提出了新的HTTP通信框架--Volley。Volley使用起來非常簡單,適用於網路訪問頻繁、通信數據量小的情況。 下載volley.jar文件並導入工程,加上訪問網路的許可權,就可以使用V
在Android開發中,經常要通過HTTP請求訪問網路。為了使通過HTTP請求訪問網路的過程更加簡單,2013年提出了新的HTTP通信框架--Volley。Volley使用起來非常簡單,適用於網路訪問頻繁、通信數據量小的情況。
下載volley.jar文件並導入工程,加上訪問網路的許可權,就可以使用Volley框架訪問網路了。
<uses-permission android:name="android.permission.INTERNET"/>
訪問的過程也十分簡單:(1)創建一個請求隊列;(2)創建請求對象;(3)將請求對象加入請求隊列。這三個步驟完成以後,請求隊列就可以自動、併發的實現網路訪問了。多個請求對象可以加入到同一個請求隊列中,因此一個Activity只需要一個請求隊列就行了。
1. 創建請求隊列
定義請求隊列:
private RequestQueue mQueue;
創建請求隊列:
mQueue = Volley.newRequestQueue(MainActivity.this);
2. 創建請求對象並加入請求隊列
Volley有兩種請求對象:StringRequest和JSONRequest。
(1) StringRequest
private void stringRequest(){ StringRequest stringRequest = new StringRequest("http://www.126.com", new Response.Listener<String>() { @Override public void onResponse(String response) { Log.i("Response:", response); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Log.i("Error:", error.getMessage(), error); } }); mQueue.add(stringRequest); }
可以看見定義了一個StringRequest對象,然後將其加入到RequestQueue就可以了。StringRequest有三個參數:第一個是要訪問的URL(這裡是http://www.126.com);第二個是收到伺服器響應的回調函數;第三個是伺服器響應失敗的回調函數。運行的結果如下:
(2) JsonObjectRequest
private void jsonRequest(){ JsonObjectRequest jsonObjectRequest = new JsonObjectRequest("http://192.168.199.18:8080/MySchool/aclasquery", null, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { Log.i("Response:", response.toString()); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Log.i("Error:", error.getMessage(), error); } }); mQueue.add(jsonObjectRequest); }
可以看見和StringRequest的使用基本上差不多,只不過StringRequest返回的是字元串,而JsonObjectRequest返回的是一個JSONObject。運行結果如下: