1.什么是Volley
Google推出的一个网络通讯框架,简化了HttpURLConnection和HttpClient的操作方式。可以以极简的方式执行get或post。
不过他还是有缺点的,执行post时添加参数较为复杂。
2.导入jar包
gradle方式导入:
compile 'com.mcxiaoke.volley:library:1.0.19'
3.基本的HTTP请求
首先我们需要一个StringRequest对象,这个对象中将包含请求的地址,请求成功监听器,请求失败监听器。
StringRequest stringRequest = new StringRequest("http://baidu.com", new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.i("demo",response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("demo",error.getMessage(),error);
}
});
然后如何执行这个请求呢?我们需要将这个请求加入到Volley的请求队列中。接下来将先获取请求队列。
注意这里拿到的RequestQueue是一个请求队列对象,它可以缓存所有的HTTP请求,然后按照一定的算法并发地发出这些请求。RequestQueue内部的设计就是非常合适高并发的,因此我们不必为每一次HTTP请求都创建一个RequestQueue对象,这是非常浪费资源的,基本上在每一个需要和网络交互的Activity中创建一个RequestQueue对象就足够了。
requestQueue = Volley.newRequestQueue(this);
还要注意的是,因为是要网络请求,所以不要忘了加上网络访问的权限。
<uses-permission android:name="android.permission.INTERNET" />
最后将请求加入到请求队列中即可。
requestQueue.add(stringRequest);
好了,现在运行程序,可以在控制台中看到如下的输出信息了。
以上是GET的请求方式,那如何执行POST请求呢?
只需使用StringRequest的另一个构造函数即可。
StringRequest stringRequest = new StringRequest(StringRequest.Method.POST, "http://baidu.com", new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.i("demo", response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("demo", error.getMessage(), error);
}
});
4.HTTP请求JSON
JSON请求有两种,分别是JsonObjectRequest和JsonArrayRequest。我们将使用JsonObjectRequest举例。
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("demo", response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("demo", error.getMessage(), error);
}
});
然后将这个请求如StringRequest一样,加入到请求队列中即可。
参考文章:http://www.kwstu.com/ArticleView/kwstu_20144118313429