Android SDK中提供了HttpClient 和 HttpUrlConnection两种方式用来处理网络操作,但当应用比较复杂的时候需要我们编写大量的代码处理很多东西:图像缓存,请求的调度等等.而HttpURLConnection和HttpClient的用法还是稍微有些复杂的,如果不进行适当封装的话,很容易就会写出不少重复代码.这个问题我们可以使用Android的volley框架来解决这个问题,volley简单易用,但是它只适合数据量较小,但是对数据操作比较频繁的情况.接下来简单介绍一下volley的使用.
RequestQueue queue;
ImageView iv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//这个imageView用来存放要加载的图片
iv = (ImageView) findViewById(R.id.iv);
//创建一个请求队列,volley的请求队列只要一个就可以
queue = Volley.newRequestQueue(this);
//创建请求对象
//下面用加载图片和获取字符串来说明volley框架的简单使用
//获取字符串
testStringRequest();
//获取图片
testImageRequest();
private void testStringRequest() {
try {
//这里使用的是在网络上请求北京天气预报的信息,使用的是聚合数据的API接口
String name = URLEncoder.encode("北京", "utf8");
String url = "http://op.juhe.cn/onebox/weather/
query?cityname="+name+"&key=你的appkey";
//访问成功后会调用此监听器中的方法
Listener<String> listener = new Listener<String>() {
@Override
public void onResponse(String arg0) {
Log.i("TAG", "访问成功"+arg0);
//Gson是用来数据解析,WeatherBean是关羽天气信息的实体类
Gson gson = new Gson();
WeatherBean bean = gson.fromJson(arg0, WeatherBean.class);
//把解析到的数据在LogCat中输出一下
Log.i("TAG","WeatherBean:------>"+bean.toString());
}
};
//访问失败后会调用此监听器中的方法
ErrorListener errorListener = new ErrorListener() {
@Override
public void onErrorResponse(VolleyError arg0) {
Log.i("TAG", "访问失败"+arg0.getMessage());
}
};
//建立获取字符串的请求
StringRequest request = new StringRequest(url , listener , errorListener );
//把创建的请求对象放到请求队列中
queue.add(request);
} catch (Exception e) {
e.printStackTrace();
}
}
private void testImageRequest() {
//建立图片加载请求,这个地址是在网上随意找的一个图片的地址
ImageRequest request = new ImageRequest( "http://img1.imgtn.bdimg.com/it/u=450944657,2119512812&fm=21&gp=0.jpg",
new Listener<Bitmap>() {
@Override
public void onResponse(Bitmap arg0) {
//把加载的图片放到imageview中
iv.setImageBitmap(arg0);
}
},
0, //设为0,表示不对图像大小不做改变
0,//设为0,表示不对图像大小不做改变
Bitmap.Config.ARGB_8888,
new ErrorListener() {
@Override
public void onErrorResponse(VolleyError arg0) {
Log.i("TAG", arg0.getMessage());
}
});
//把请求假如请求队列
queue.add(request);
}