Volley及FastJson的简单使用

Volley的简单使用
介绍:Volley是Google开发的一个进行联网操作的框架,一般针对于联网的内容比较小的时候使用起来会非常方便。步骤如下:
1.将Volley的jar包导入到bins目录的文件下,在android studio中一定要记得还要手动进行一下添加。
2.RequestQueue  定义一个成员变量RequestQueue对象requestQueue,一般在oncreate()方法中进行创建,RequestQueue

requestQueue=Volley.newRequestQueue(this);
3.在合适的方法中进行请求操作,比如在Button的点击事件中进行Get请求,针对不同的返回数据类型,一般有StringRequest,

JsonObjectRequest,ImageRequest三种请求方式,以StringRequest为例:StringRequest stringRequest=new StringRequest(参

数一,参数二,参数三,参数四);
参数一:请求方法,如:StringRequest.Method.GET     
参数二:请求地址,url
参数三:Listener类型 ,接收网络响应的接口,即只要得到本次请求对应的返回结果就会运行此接口中的onResponse方法。
参数四:ErrorListener类型,用于接收当网络请求的过程中一旦发生了什么错误,就会调用本接口中的onErrorResponse方法。
4.设置请求Tag,以方便解除,如:stringRequest.setTag("GET");
5.将请求添加到请求对列中,执行网络任务。方法为:requestQueue.add(stringRequest)。没有该方法,将无法进行联网下载


6.Post方式相对Get方式有一些不同,主要在于:请求条件的指定必须在StringRequest对象的后面添加{},并且
在{}内重写getParams方法,该方法的返回值就是所有的请求条件,请求条件用Map类型来进行键值对的存储,返回map即可


7.JsonObjectRequest的GET请求方式和StringRequest方式基本相同,POST方式不同之处在于:首先,需要生成一个JSONObject类

型的对象,并通过put方法将请求条件通过键值对的方式存储,然后在生成JsonObjectRequest对象时,通过一个五个参数的构造方

法,第三个参数就是JSONObject类型的带有请求条件的对象,其他四个参数和StringRequest相同。

<span style="font-size:18px;">public class MainActivity extends Activity {

    RequestQueue queue;

    private String url = "http://mobapi.meilishuo.com/2.0/express/recommend_entrance?imei=000000000000000&mac=08%3A00%3A27%3A51%3A2e%3Aaa&qudaoid=11601&access_token=6c5428735c0a46cbd4bd0ac53fd9da30&st=1429002510&_sign=bf62212d98e50df072288c9e86077939467f9b10";

    TextView tv;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv = (TextView) findViewById(R.id.tv); 
        queue = Volley.newRequestQueue(this);
    }

    public void click(View v) {
        switch (v.getId()) {
            case R.id.stringGet:  //GET请求的处理
                StringRequest request = new StringRequest(StringRequest.Method.GET,
                        url,
                        new Response.Listener<String>() {
                            //参数代表本次网络请求的结果
                            @Override
                            public void onResponse(String s) {
                                tv.setText(s);
                            }
                        },
                        new Response.ErrorListener() {
                            @Override
                            public void onErrorResponse(VolleyError volleyError) {
                                Toast.makeText(MainActivity.this, "出错原因:" +
                                        volleyError.getMessage(), Toast.LENGTH_SHORT)
                                        .show();
                            }
                        });

                //三,给请求对象设置tag标识
                request.setTag("get");
                //四,将请求添加到请求队列中,执行网络请求
                queue.add(request);
                break;
            case R.id.stringPost:  //实现post请求

                StringRequest post = new StringRequest(StringRequest.Method.POST,
                        "http://mobapi.meilishuo.com/2.0/express/recommend_entrance",
                        new Response.Listener<String>() {
                            @Override
                            public void onResponse(String s) {
                                tv.setText(s);
                            }
                        },
                        new Response.ErrorListener() {
                            @Override
                            public void onErrorResponse(VolleyError volleyError) {

                            }
                        }) {
                    @Override
                    protected Map<String, String> getParams() throws AuthFailureError {

                        //将请求条件封装到map对象中
                        Map<String, String> map = new HashMap<String, String>();
                        map.put("imei", "000000000000000");
                        map.put("mac", "08%3A00%3A27%3A51%3A2e%3Aaa");
                        map.put("qudaoid", "11601");
                        map.put("access_token", "6c5428735c0a46cbd4bd0ac53fd9da30");
                        map.put("st", "1429002510");
                        map.put("_sign", "bf62212d98e50df072288c9e86077939467f9b10");
                        return map;
                    }
                };

                post.setTag("post");
                queue.add(post);
                break;
            case R.id.jsonPost:
                JSONObject object = new JSONObject();

                try {
                    object.put("imei", "000000000000000");
                    object.put("mac", "08%3A00%3A27%3A51%3A2e%3Aaa");
                    object.put("qudaoid", "11601");
                    object.put("access_token", "6c5428735c0a46cbd4bd0ac53fd9da30");
                    object.put("st", "1429002510");
                    object.put("_sign", "bf62212d98e50df072288c9e86077939467f9b10");
                } catch (JSONException e) {
                    e.printStackTrace();
                }

                JsonObjectRequest jsonPost = new JsonObjectRequest(
                        JsonObjectRequest.Method.POST,
                        "http://mobapi.meilishuo.com/2.0/express/recommend_entrance",
                        object,//jsonObject类型的对象,此对象用于设置本次网络请求的请求条件
                        new Response.Listener<JSONObject>() {
                            @Override
                            public void onResponse(JSONObject jsonObject) {
                                tv.setText(jsonObject.toString());
                            }
                        },
                        new Response.ErrorListener() {
                            @Override
                            public void onErrorResponse(VolleyError volleyError) {

                            }
                        }
                );
                jsonPost.setTag("jsonpost");
                queue.add(jsonPost);
                break;
        }
    }
}
</span>

FastJson的简单使用
FastJson是阿里巴巴公司开发的Json数据解析框架,号称解析数据最快。使用方法:
1.导jar包
2.一般在获得json数据的后进行数据的加载解析操作,一般是在JsonObjectRequest第三个参数的回调方法中调用
 但是在调用之前,第一步要对解析的数据进行类型封装,属性封装一定要先看看解析的格式和类型,一般此时会有JSONJArray类

型的属性,一定再对该类型进行类的封装,直到都为单一属性即可。此时,一定要对封装的类进行一个无参的构造方法。
 比如:MeLiShuo ms =  com.alibaba.fastjson.JSONObject.parseObject(jsonObject.toString(),MeLiShuo.class);
   美丽说数据接口类型,参数一为json数据,参数二为数据类型.class
       list.addAll(ms.getData());Data为其ArrayJSON类型,有过封装之后,传入list集合,在适配器中进行加载。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值