将volley的jar包添加到工程中。
全局变量:
RequestQueue queue = Volley.newRequetQueue(Context context);
String url = “”;
一、从远端获取字符串
StringRequest request = new StringRequest(Tequest.Method.GET,url,
new Response.Listener<String>(){
@Override
public void onRespense(String result){
//result为远端请求的数据,在此做请求成功的相应操作 包括UI界面更新
}
},new Respense.ErrorListener(){
@Override
public void onErrorRespense(VolleyError volleyError){
}
});
queue.add(request);
二、从远端获取图片(3种方法)
ImageView imageView = (ImageView)findViewById(R.id.img);
1、ImageRequest(推荐)
ImageRequest imageRequest = new ImageRequest(url,
new Response.Listener<Bitmap>(){
@Override
public void onRespense(Bitmap bitmap){
//加载成功时,UI界面更新 imageView .setImageBitmap(bitmap);
}
},0,0,null,Bitmap.Config.RGB_565,new Response.ErrorListener(){
@Override
public void onErrorResponse(VolleyError volleyError){
//加载失败时,UI界面显示;
}
});
queue.add(imageRequest);
2、ImageLoader
ImageLoader loader = new ImageLoader(queue,new MyImageCache());
ImageLoader.ImageListener listener = ImageLoader.getImageListener(imageView,//加载中显示的图片,//加载失败时显示的图片);
loader .get(url,listener);
private class MyImageCache implements ImageLoader.ImageCache{
private LruCache<String,Bitmap> mCache;//声明一个缓存对象
public MyImageCache(){
int maxSize = 10*1024*1024;
mCache = new LruCache<>(maxSize);//实例化缓存对象并声明大小
}
@Override
public Bitmap getBitmap(String url){
return mCache.get(url);
}
@Override
public void putBitmap(String url,Bitmap bitmap){
mCache.put(url,bitmap);
}
}
3、NetWorkImageView
在布局中声明一个NetworkImageView组件
NetworkImageView netImg = (NetworkImageView)findViewById(R.id.netImg);
netImg.setImageUrl(url,new ImageLoader(queue,
new ImageLoader.ImageCache(){
@Override
public Biemap getBitmap(String s){ return null; }
@Override
public void putBitmap(String s,Bitmap bitmap){}
}));
netImg.setDefaultImageResId(//缺省图片ID);
netImg.setErrorImageResId(//加载失败时显示图片id);
三、从远端解析JSON数据
//JsonObjestRequest 获取的是json对象。而不是整个json。
JsonObjestRequest request = new JsonObjestRequest(Request.Method.GET,url,null,
new Response.Listener<JSONObject>(){
@Override
public void onRespense(JSONObject jsonObject){
//加载成功后json解析相关操作 以及UI界面的更新;
}
},new Respense.ErrorListener(){
@Override
public void onErrorRespense(VolleyError volleyError){
//加载失败后的相关操作;
}
});
queue.add(request);
四、从远端解析XML数据
XMLRequest request = new XMLRequest(Request.Method.GET, url,
new Response.ErrorListener(){
@Override
public void onErrorResponse(VolleyError volleyError){
//加载失败后的相关操作;
}
},new Response.Listener<XmlPullParser>(){
@Override
public void onResponse(XmlPullParser xmlPullParser){
//加载成功后 解析XML的相应操作 以及UI界面的更新;
}
});
queue.add(request);
//需要重写一个类继承Request用于XML解析 泛型为XmlPullParser
private class XMLRequest extends Request<XmlPullParser>{
private Response.Listener listener;
public XMLRequest(int method,String url,Respense.ErrorListener errorListener,
Response.Listener listener){
Super(method, url, errorListener);
this.listener = listener;
}
@Override
protected Respense<XmlPullParser> parseNetworkResponse(NetworkResponse respense){
XmlPullParser parser = null;
try{
String s = new String(response.data, HttpHeaderarser.parseCharset(reaponse.headers));
parser = Xml.newPullParser();
parser.setInput(new StringReader(s));
} catch(UnsupportedEncodingException e){
e.printStackTrace();
}catch(XmlPullParserException e){
e.printStackTrace();
}
return Response.success(parser,HttpHeaderParser.parseCacheHeaders(response));
}
@Override
protected void deliverResponse(XmlPullParser xmlPullParser){
listener.onReaponse(xmlPullParser);
}
}