Volley的使用

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());
        }
    });

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值