什么是Volley?汉语译过来就是:齐射;迸发的意思。可以看出来,Volley特别适合数据量不大但是通信频繁的场景。
Volley是Google I/O 2013上Google官方发布的一款Android平台上的网络通信库。
以前的网络请求,要考虑开启线程、内存泄漏、性能等等复杂的问题。但是Volley框架已经帮我们把这些问题处理好了,对外提供了相应的完善的请求API,我们只需要按照要求使用即可。
能使网络通信更快,更简单,更健壮
Get、Post网络请求及网络图像的高效率异步处理请求
可以对网络请求进行排序优先级管理
网络请求的缓存
多级别取消请求
和Activity生命周期的联动(Activity结束时同时取消所有网络请求)
使用Volley可以简化一些网络通信的开发,当然Volley不适合大数据(large payloads )和流媒体的网络请求。例如上百兆的文件、视频下载。
Volley开源,可以进行定制修改也可以直接使用Jar包的形式。
实现步骤:
在导入jar包,和主清单文件中开启网络权限之后 <uses-permission android:name="android.permission.INTERNET"/>
1创建RequestQueue队列对象
2创建StringRequest对象
3 把StringRequest对象放到RequestQueue队列中
public class MainActivity extends Activity {
private Button button1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button1=(Button) findViewById(R.id.button1);
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// getStringVolley();
getJSONVolley();
}
});
}
/**
* 获取字符串,包括json,xml,html都能获取
*
*/
public void getStringVolley() {
String url="http://192.168.191.1/MyPhpVolley/adduser23.php";
RequestQueue mQueue = Volley.newRequestQueue(MainActivity.this);
StringRequest request = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.e("1", response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("1", error.getMessage());
// 打印出来服务器返回的数据:{"_id":"20","_name":"zhh1","_age":"1"}
}
}){
// 向服务器传递的参数
@Override
protected Map<String, String> getParams()throws AuthFailureError {
HashMap<String, String> map = new HashMap<String, String>();
map.put("name", "zhh1");
map.put("age", "1");
return map;
}
};
mQueue.add(request);
}
/**
* 获取json字符串
*
*/
public void getJSONVolley() {
String url="https://api.douban.com/v2/book/1220562";
RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this);
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(
Request.Method.POST, url, null,
new Response.Listener<JSONObject>() {
public void onResponse(JSONObject response) {
Log.e("1","服务器返回数据" + response);
}
}, new Response.ErrorListener() {
public void onErrorResponse(VolleyError error) {
Log.e("1","对不起,有问题");
Log.e("1", error.getMessage(), error);
}
}){
// 向服务器传递的参数
@Override
protected Map<String, String> getParams()throws AuthFailureError {
HashMap<String, String> map = new HashMap<String, String>();
map.put("name", "zhh1");
map.put("age", "1");
return map;
}
};
requestQueue.add(jsonObjectRequest);
}
}
</span>
注意:主清单文件中要开网络权限:
<uses-permission android:name="android.permission.INTERNET"/>
volley库及jar包下载:
http://download.csdn.net/detail/zhaihaohao1/9426520
http://download.csdn.net/detail/sinyu890807/7152015