1.概述
關于Volley架構本人不做過多介紹!本文将提供一組JSON請求模闆代碼,希望對大家有所幫助!
進入主題前,啰嗦兩句,大家應該注意以下兩點:
1. 關于請求隊列RequestQueue,建議整個應用共享一個請求隊列。每次請求建立一個隊列開銷比較大,不算合理。
2. 建議實作parseNetworkResponse方法,設定編碼格式,防止亂碼。
2. GET請求
// 1.建立請求隊列
RequestQueue volleyRequestQueue = Volley.newRequestQueue(this);
// 2.json get請求處理
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(
Request.Method.GET, "your server url", null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject arg0) {
try {
String strState = arg0.getString("state");
if (strState != null
&& strState.equalsIgnoreCase("success")) {
System.out.println("request success!");
} else {
System.out.println("request failed!");
}
} catch (Exception e) {
System.out.println("request failed!");
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError arg0) {
System.out.println("request failed!");
}
}) {
@Override
protected Response<JSONObject> parseNetworkResponse(
NetworkResponse arg0) {
try {
JSONObject jsonObject = new JSONObject(new String(
arg0.data, "UTF-8"));
return Response.success(jsonObject,
HttpHeaderParser.parseCacheHeaders(arg0));
} catch (UnsupportedEncodingException e) {
return Response.error(new ParseError(e));
} catch (Exception je) {
return Response.error(new ParseError(je));
}
}
};
// 3.請求對象放入請求隊列
volleyRequestQueue.add(jsonObjectRequest);
3. POST請求
try {
// 1.建立請求隊列
RequestQueue volleyRequestQueue = Volley.newRequestQueue(this);
// 2.POST請求參數
JSONObject params = new JSONObject();
params.put("name", "zhangsan");
params.put("password", "123456");
// 3.json post請求處理
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(
Request.Method.POST, "your server url", params,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject arg0) {
try {
String strState = arg0.getString("state");
if (strState != null
&& strState.equalsIgnoreCase("success")) {
System.out.println("request success!");
} else {
System.out.println("request failed!");
}
} catch (Exception e) {
System.out.println("request failed!");
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError arg0) {
System.out.println("request failed!");
}
}) {
@Override
protected Response<JSONObject> parseNetworkResponse(
NetworkResponse arg0) {
try {
JSONObject jsonObject = new JSONObject(new String(
arg0.data, "UTF-8"));
return Response.success(jsonObject,
HttpHeaderParser.parseCacheHeaders(arg0));
} catch (UnsupportedEncodingException e) {
return Response.error(new ParseError(e));
} catch (Exception je) {
return Response.error(new ParseError(je));
}
}
};
// 4.請求對象放入請求隊列
volleyRequestQueue.add(jsonObjectRequest);
} catch (Exception e) {
}