Volley的使用

介绍
谷歌开源的,
专注于处理高频率的数据比较小的请求
内部仍然是使用的HttpURLConnection和HttpClient进行网络请求的,
只是对于不同的
Android版本进行了响应的切换,
2.3之前使用的HttpClient,
2.3之后使用的是 HttpURLConnection
支持取消请求
具有网络请求和图片加载的功能

添加依赖

compile 'com.android.volley:volley:1.0.0'

创建RequestQueue请求队列,它是用来执行请求对象的

RequestQueue queue = Volley.newRequestQueue(this);

创建请求对象,这里使用最简单的StringRequest:

StringRequest stringRequest = new StringRequest(Api.TEST, new com.android.volley.Response.Listener<String>() {
    @Override
    public void onResponse(String response) {
        text.setText(response);
    }
}, new com.android.volley.Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {

    }
});

执行请求,将Request对象添加到RequestQueue中,即可

//3.执行请求
queue.add(stringRequest);

使用JsonRequest进行请求,返回的是json对象

//1.创建JsonRequest请求
JsonObjectRequest joRequest = new JsonObjectRequest(url, null, new Listener<JSONObject>() {
    @Override
    public void onResponse(JSONObject response) {
        tv_result.setText(response.toString());
    }
}, new MyErrorListener());
//2.执行请求
queue.add(joRequest);

使用Volley发送post请求,需要自己重写Request的getParams方法

public class PostReuqest extends StringRequest {
    private Map<String, String> params;
    public PostReuqest(String url, Response.Listener<String> listener, Response.ErrorListener errorListener) {
        super(url, listener, errorListener);
    }
    public PostReuqest(int method,String url, Response.Listener<String> listener, Response.ErrorListener errorListener) {
        super(method,url, listener, errorListener);
    }
    public void setParams(Map<String, String> params){
        this.params = params;
    }
    @Override
    protected Map<String, String> getParams() throws AuthFailureError {
        return params;
    }
}

PostReuqest stringRequest = new PostReuqest(Request.Method.POST,Api.LOGIN, new com.android.volley.Response.Listener<String>() {
    @Override
    public void onResponse(String response) {
        text.setText(response);
    }
}, new com.android.volley.Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {

    }
});
HashMap<String,String> map = new HashMap<>();
map.put("username","hehehe");
map.put("password","12321");
stringRequest.setParams(map);

    原文作者:靓亮
    原文地址: https://www.jianshu.com/p/1faf1514fd6f
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞