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
原创粉丝点击