网络框架-volley

来源:互联网 发布:floyd算法 路径 编辑:程序博客网 时间:2024/06/05 05:36
  1. volley介绍
    2013年Google I/O大会上推出了一个新的网络通信框架——Volley。Volley可是说是把AsyncHttpClient和Universal-Image-Loader的优点集于了一身,既可以像AsyncHttpClient一样非常简单地进行HTTP通信,也可以像Universal-Image-Loader一样轻松加载网络上的图片。除了简单易用之外,Volley在性能方面也进行了大幅度的调整,它的设计目标就是非常适合去进行数据量不大,但通信频繁的网络操作,而对于大数据量的网络操作,比如说下载文件等,Volley的表现就会非常糟糕。
  2. StringRequest的用法
    `RequestQueue mQueue = Volley.newRequestQueue(context);

    StringRequest stringRequest = new StringRequest("http://www.baidu.com",        new Response.Listener<String>() {            @Override            public void onResponse(String response) {                Log.d("TAG", response);            }        }, new Response.ErrorListener() {            @Override            public void onErrorResponse(VolleyError error) {                Log.e("TAG", error.getMessage(), error);            }        });

    mQueue.add(stringRequest);
    //将StringRequest对象添加到RequestQueue里面
    `
    new出了一个StringRequest对象,StringRequest的构造函数需要传入三个参数,第一个参数就是目标服务器的URL地址,第二个参数是服务器响应成功的回调,第三个参数是服务器响应失败的回调。其中,目标服务器地址我们填写的是百度的首页,然后在响应成功的回调里打印出服务器返回的内容,在响应失败的回调里打印出失败的详细信息。


post的用法

String url="http://www.baidu.com";        Listener<String> listener=new Listener<String>() {            @Override            public void onResponse(String response) {                Log.d("TAG", response);            }        };        ErrorListener errorListener=new ErrorListener() {            @Override            public void onErrorResponse(VolleyError error) {                Log.e("TAG", error.getMessage(), error);            }        };        StringRequest stringRequest = new StringRequest(Method.POST, url,  listener, errorListener) {              @Override              protected Map<String, String> getParams() throws AuthFailureError {                  Map<String, String> map = new HashMap<String, String>();                  map.put("params1", "value1");                  map.put("params2", "value2");                  return map;              }          };      }

3.JsonRequest的用法。类似于StringRequest,JsonRequest也是继承自Request类的,不过由于JsonRequest是一个抽象类,因此我们无法直接创建它的实例,那么只能从它的子类入手了。JsonRequest有两个直接的子类,JsonObjectRequest和JsonArrayRequest,从名字上你应该能就看出它们的区别了吧?一个是用于请求一段JSON数据的,一个是用于请求一段JSON数组的。

    JsonObjectRequest jsonObjectRequest = new JsonObjectRequest("http://m.weather.com.cn/data/101010100.html", null,              new Response.Listener<JSONObject>() {                  @Override                  public void onResponse(JSONObject response) {                      Log.d("TAG", response.toString());                  }              }, new Response.ErrorListener() {                  @Override                  public void onErrorResponse(VolleyError error) {                      Log.e("TAG", error.getMessage(), error);                  }              });  

可以看到,这里我们填写的URL地址是http://m.weather.com.cn/data/101010100.html,这是中国天气网提供的一个查询天气信息的接口,响应的数据就是以JSON格式返回的,然后我们在onResponse()方法中将返回的数据打印出来。

最后再将这个JsonObjectRequest对象添加到RequestQueue里就可以了务器返回给我们的数据确实是JSON格式的,并且onResponse()方法中携带的参数也正是一个JSONObject对象,之后只需要从JSONObject对象取出我们想要得到的那部分数据就可以了。

你应该发现了吧,JsonObjectRequest的用法和StringRequest的用法基本上是完全一样的

0 0
原创粉丝点击