Volley框架是用来处理android中大量http请求的。
主要就是XXXRequest的使用,它的构造函数中,最主要的参数就是url,Listener(Response.Listener和Response.errorListener)。其中url表示地址,Listener表示请求结果返回时要做的操作。
new ImageRequest(ImageUrl, new Response.Listener<Bitmap>() { @Override public void onResponse(Bitmap bitmap) { volleyImage.setImageBitmap(bitmap); } }, 300, 200, Bitmap.Config.ALPHA_8, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { volleyImage.setImageResource(R.drawable.localimage); } });这是一个Image的请求,它的构造参数有Url,Listener,以及图片的参数。
ImageRequest这个类继承自Request<T>,可以自己定义一个类继承它来解析制定的数据。
public class GetJsonRequest extends Request<Employee> { private ResponseListener listener; private Gson gson; private Type type; public GetJsonRequest(String url,Type type, ResponseListener listener) { super(Method.GET, url, listener); this.listener = listener; this.type = type; gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create(); } @Override protected Response<Employee> parseNetworkResponse(NetworkResponse networkResponse) { Employee result; try { String jsonString = new String(networkResponse.data, HttpHeaderParser.parseCharset(networkResponse.headers)); result = gson.fromJson(jsonString,type); return Response.success(result,HttpHeaderParser.parseCacheHeaders(networkResponse)); } catch (UnsupportedEncodingException e) { e.printStackTrace(); return Response.error(new ParseError(e)); } } @Override protected void deliverResponse(Employee response) { listener.onResponse(response); } }
GetJsonRequest 类用来请求JSON数据,并且把返回的JSON数组转化成实体。 这里的ResponseListener接口继承了Response.Listener和Response.errorListener。public interface ResponseListener extends Response.ErrorListener,Response.Listener<Employee> { }
使用GetJsonRequest 的时候应该这样调用:new GetJsonRequest(JsonUrl, new TypeToken<Employee>() { }.getType(), new ResponseListener() { @Override public void onErrorResponse(VolleyError volleyError) { } @Override public void onResponse(Employee employee) { jsonStr.setText(employee.getEmployee_id()+" "+employee.getEmployee_name()+""+employee.getEmployee_password()); } });