您的位置:首页 > Web前端 > JavaScript

Volley及FastJson的简单使用

2015-10-26 21:41 766 查看
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集合,在适配器中进行加载。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: