android---(volley网络通信框架)
来源:互联网 发布:win7怎么装sqlserver 编辑:程序博客网 时间:2024/05/01 16:59
public class MainActivity extends AppCompatActivity { //请求队列 RequestQueue queue = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //创建请求队列 queue = Volley.newRequestQueue(this); } /** * 发送一个 get 字符串的请求 * * @param view */ public void stringGet(View view) { String url = "http://www.baidu.com"; StringRequest request = new StringRequest( Request.Method.GET, url, new Response.Listener<String>() { @Override public void onResponse(String s) { System.out.print(s); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { System.out.print(volleyError); } }); //请求加入队列 queue.add(request); } /** * 发送一个 post 字符串请求,并带参数发送 * * @param view */ public void stringPost(View view) { String url = "http://baidu.com"; StringRequest request = new StringRequest( Request.Method.POST, url, new Response.Listener<String>() { @Override public void onResponse(String s) { System.out.print(s); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { System.out.print(volleyError); } }) { @Override protected Map<String, String> getParams() throws AuthFailureError { //post请求时的参数数 Map<String, String> params = new HashMap<>(); params.put("name", "zhang"); return params; } }; queue.add(request);//将请求添加到队列中 }}
/** * json 请求 * * @param view */ public void jsonGET(View view) { String uri = "http://weather.123.duba.net/static/weather_info/101010100.html"; /* 请求参数格式: JSONObject jsonObject = new JSONObject(); try { jsonObject.put("name", "value"); } catch (JSONException e) { e.printStackTrace(); } */ //参数:请求方式,uri,请求的参数,响应的回调接口,错误的回调接口 JsonObjectRequest json = new JsonObjectRequest( Request.Method.GET, uri, null,//请求传递的参数,是一个json对象 new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject jsonObject) { //解析json数据 System.out.print(jsonObject); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { System.out.print(volleyError); } }); queue.add(json);//请求添加到对队列中 }
/** * 图片请求 * * @param view */ public void imageRequest(View view) { String url = "http://pic1.ooopic.com/uploadfilepic/sheji/2009-05-05/OOOPIC_vip4_20090505079ae095187332ea.jpg"; final ImageRequest imageRequest = new ImageRequest( url, new Response.Listener<Bitmap>() { @Override public void onResponse(Bitmap bitmap) { imageView.setImageBitmap(bitmap);//将图片填充到 imageview中; } }, 0, 0, Bitmap.Config.RGB_565, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { } }); queue.add(imageRequest);//请求添加到对队列中 }
/** * imageLoader 加载图片,可以缓存图片 imageLoader */ public void imageRequest(View view) { //图片url String url = "http://pic1.ooopic.com/uploadfilepic/sheji/2009-05-05/OOOPIC_vip4_20090505079ae095187332ea.jpg"; //创建加载器对象 ImageLoader imgLoader = new ImageLoader( queue, new BitMapCache());//图片缓存功能 //获取图片监听器 ImageLoader.ImageListener listener = ImageLoader.getImageListener(imageView, R.mipmap.ic_launcher, R.mipmap.ic_launcher); imgLoader.get(url, listener, 200, 200); } private class BitMapCache implements ImageLoader.ImageCache { //String:表示图片的名称 private LruCache<String, Bitmap> cache; //图片的缓存大小 private int maxSize = 10 * 1024 * 1024; public BitMapCache() { cache = new LruCache<>(maxSize);//创建图片缓存 } @Override public Bitmap getBitmap(String s) { return cache.get(s);//通过图片名称得到图片 } @Override public void putBitmap(String s, Bitmap bitmap) { cache.put(s, bitmap);//图片存入缓存中 } }
//NetworkImageView组件: <com.android.volley.toolbox.NetworkImageView android:id="@+id/imageView" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentStart="true" android:scaleType="center" />----------------------public class MainActivity extends AppCompatActivity { //请求队列 RequestQueue queue = null; private NetworkImageView networkImageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //创建请求队列 queue = Volley.newRequestQueue(this); //通过 NetworkImageView 组件来加载图片 networkImageView = (NetworkImageView) findViewById(R.id.imageView); newWorkImageView(); } private void newWorkImageView() { String url = "http://pic1.ooopic.com/uploadfilepic/sheji/2009-05-05/OOOPIC_vip4_20090505079ae095187332ea.jpg"; networkImageView.setErrorImageResId(R.mipmap.ic_launcher); networkImageView.setImageUrl(url, new ImageLoader(queue, new BitMapCache())); } //图片缓存功能 private class BitMapCache implements ImageLoader.ImageCache { //String:表示图片的名称 private LruCache<String, Bitmap> cache; //图片的缓存大小 private int maxSize = 10 * 1024 * 1024; public BitMapCache() { cache = new LruCache<>(maxSize);//创建图片缓存 } @Override public Bitmap getBitmap(String s) { return cache.get(s);//通过图片名称得到图片 } @Override public void putBitmap(String s, Bitmap bitmap) { cache.put(s, bitmap);//图片存入缓存中 } } }
/** * Gson 请求数据 */public class GsonRequest extends Response<T> { private final Response.Listener<T> mlistener; private Gson gson; private Class<T> mClass; public GsonRequest(int method, String url, Class<T> mClass, Response.Listener<T> mlistener, Response.ErrorListener listener) { super(method, url, listener); this.mlistener = mlistener; this.mClass = mClass; } @Override protected Response<T> parseNetworkResponse(NetworkResponse networkResponse) { try { //取出响应的数据,并根据头,将数据变为指定编码的字符 String xmlString = new String(networkResponse.data, HttpHeaderParser.parseCharset(networkResponse.headers)); return Response.success(gson.fromJson(jsonString, mClass), HttpHeaderParser.parseCacheHeaders(networkResponse)); } catch (UnsupportedEncodingException e) { e.printStackTrace(); return Response.error(new ParseError(e)); } } /** * 分发数据 * * @param Gson */ @Override protected void deliverResponse(T t) { mlistener.onResponse(t); }}
/** * 自定义数据请求器 */public class XMLRequest extends Request<XmlPullParser> { private final Response.Listener<XmlPullParser> xmlPullParserListener; //mlistener :需要用户 将监听器对象传进来 public XMLRequest(int method, String url, Response.Listener<XmlPullParser> mlistener, Response.ErrorListener listener) { super(method, url, listener); this.xmlPullParserListener = mlistener; } @Override protected Response<XmlPullParser> parseNetworkResponse(NetworkResponse networkResponse) { try { //取出响应的数据,并根据头,将数据变为指定编码的字符 String xmlString = new String(networkResponse.data, HttpHeaderParser.parseCharset(networkResponse.headers)); XmlPullParser pull = Xml.newPullParser(); pull.setInput(new StringReader(xmlString)); return Response.success(pull, HttpHeaderParser.parseCacheHeaders(networkResponse)); } catch (XmlPullParserException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return null; } /** * 分发数据 * * @param xmlPullParser */ @Override protected void deliverResponse(XmlPullParser xmlPullParser) { xmlPullParserListener.onResponse(xmlPullParser); }}
0 0
- Android网络通信框架:Volley
- Android网络通信框架Volley
- Android网络通信框架Volley
- Android网络通信框架Volley
- Android网络通信框架Volley
- Android网络通信框架Volley
- Android网络通信框架Volley
- Android网络通信框架Volley
- Android 网络通信框架Volley
- android---(volley网络通信框架)
- Android Volley网络通信框架
- Android-Volley网络通信框架
- Android 网络通信框架Volley
- 【Android进阶】-Android 网络通信框架 Volley
- Android网络通信框架Volley详解
- Android轻网络通信框架--Volley
- Android网络通信框架Volley初体验
- Android 网络通信框架Volley学习
- Java多线程
- 【HttpClient4.5中文教程】【第一章 :基础】1.2 HttpClient接口
- 【Android成长之路】全局大喇叭——广播机制的浅谈(使用本地广播)
- ZOJ 2243 Binary Search Heap Construction笛卡尔树(二叉搜索+堆)
- 推荐使用string直接量来赋值
- android---(volley网络通信框架)
- 记录python数据持久存储的一点问题
- LeetCode Contains Duplicate II 数组
- java.util.logging.Logger使用详解
- 【HttpClient4.5中文教程】【第一章 :基础】1.3 HttpClient执行上下文
- Java HashMap的数据结构以及put和get方法
- 计算机系统的硬件结构之存储器
- 【C++】内联函数,inline
- POJ1741(树分治)