Volley框架学习一

volley非常适合去进行数据量不大,但通信频繁的网络操作,而对于大数据量的网络操作,比如说下载文件等,Volley的表现就会非常糟糕。

下载地址

接下来学习一下

导入jar包就不说了

声明网络权限:

<uses-permission android:name="android.permission.INTERNET"/>

基本步骤:
1.声明一个RequestQueue
2.创建一个StringRequest或则JsonRequest
3.将StringRequest(JsonRequest)添加到RequestQueue里

StringRequest

代码:
xml布局:

 <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="" />

获取百度首页HTML代码:

 text = (TextView)findViewById(R.id.text);

        RequestQueue requestQueue = Volley.newRequestQueue(this);

        StringRequest stringRequest = new StringRequest("http://www.baidu.com"
                , new Response.Listener<String>() {
            @Override
            public void onResponse(String s) {
                text.setText(s);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {
                text.setText("error");
            }
        });

        requestQueue.add(stringRequest);

效果:
Volley框架学习一_第1张图片

上面我们用的是GET方式获取数据
但是我们经常是用POST方式传参到服务器,那么怎么表示POST方式和传参呢?
看下面,重写父类的方法:

 StringRequest stringRequest = new StringRequest(Request.Method.POST,"http://www.baidu.com"
                , new Response.Listener<String>() {
            @Override
            public void onResponse(String s) {
                text.setText(s);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {
                text.setText("error");
            }
        }){
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {

                Map<String,String> map = new HashMap<String,String>();
                map.put("param1","value1");
                map.put("param2","value2");
                return map;
            }
        };

JsonRequest

同时我们需要从服务器获取数据,一般都是Json格式的数据:
由于JsonRequest是一个抽象类,我们无法直接创建它的实例,所以只能从它的子类入手了。
JsonRequest有两个直接的子类,JsonObjectRequest和JsonArrayRequest,很明显,一个是用于请求一段JSON数据的,一个是用于请求一段JSON数组的。

他们的用法和StringRequest差不多:

这里我们用一个淘宝的接口获取Json数据:
淘宝搜索鸡蛋的链接
解析出来:

{
    "result": [ [ "鸡蛋干", "67432" ], [ "鸡蛋包装盒", "7021" ], [ "鸡蛋杯", "17388" ], [ "鸡蛋盒", "55365" ], [ "鸡蛋果", "35760" ], [ "鸡蛋仔机", "2332" ], [ "鸡蛋托", "19395" ], [ "鸡蛋包装", "34252" ], [ "鸡蛋花", "33817" ], [ "鸡蛋面", "38737" ] ],
    "cat": [ [ "水果蔬菜/水产肉类/熟食", "50108542", "鸡蛋" ] ] }

程序:

 RequestQueue requestQueue = Volley.newRequestQueue(this);

        JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(URL, null, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject jsonObject) {
                text.setText(jsonObject.toString());
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {
                text.setText("Json Error");
            }
        });

        requestQueue.add(jsonObjectRequest);

效果:

Volley框架学习一_第2张图片

你可能感兴趣的:(json,android,Volley,reuqest)