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