zoukankan      html  css  js  c++  java
  • NoHttp详解之NoHttp最基本使用(无封装)

    NoHttp详细使用文档,请点我移步!

    这里是一个最基本的使用,在项目中也可以直接这样使用,如果想学习更多请移步NoHttp主页:
    https://github.com/yanzhenjie/NoHttp

    特别注意:这里的RequestQueue是请求队列,默认3个并发请求,也就是有3个子线程在跑,所以正式项目中不要每发起一个请求就new一个队列,建议在BaseActivity#onCreate(Bundle)中new一个队列即可,这个activity的所有请求包括依赖此activityfragment都是用这个队列即可,在BaseActivity#onDestory()stop这个队列即可,当然特殊情况下可以再new一个Queue出来,也无伤大雅的。

    建议读者阅读完下方的代码后再把上面这句话读一遍,会理解的更深刻。

    BaseActivity,提供基础的封装

    public class BaseActivtiy extends Activity implements View.OnClickListener {
    
        /**
         * 请求队列
         */
        private RequestQueue mRequestQueue;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            // 创建请求队列, 默认并发3个请求, 传入数字改变并发数量: NoHttp.newRequestQueue(5);
            mRequestQueue = NoHttp.newRequestQueue();
        }
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
    
            mRequestQueue.cancelAll(); // 退出页面时时取消所有请求。
            mRequestQueue.stop(); // 退出时销毁队列,回收资源。
        }
    
    
        /**
         * 发起一个请求。
         *
         * @param what     what.
         * @param request  请求对象。
         * @param listener 结果监听。
         * @param <T>      要请求到的数据类型。
         */
        public <T> void request(int what, Request<T> request, OnResponseListener<T> listener) {
            mRequestQueue.add(what, request, listener);
        }
    }

    在BaseActivity的子类中使用

    public class MainActivity extends BaseActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            ...
        }
    
        /**
         * 请求用户信息。
         */
        private void requestUserInfo() {
            Request<String> req = NoHttp.createStringRequest(url);
            request(0, req, new OnResponseListener<String>() {
                @Override
                public void onStart(int what) {
                    // 请求开始,可以显示一个dialog。
                }
    
                @Override
                public void onSucceed(int what, Response<String> response) {
                    // 请求成功,这里判断服务器的响应码,假如你们服务器200时,才是业务成功:
                    Headers headers = response.getHeaders();
                    if(headers.getResponseCode() == 200) {
                        String result = response.get(); // 拿到结果。
                    }
                }
    
                @Override
                public void onFailed(int what, Response<String> response) {
                    // 请求失败,具体失败类型,请看nohttp主页的demo。
                }
    
                @Override
                public void onFinish(int what) {
                    // 请求结束,关闭dialog。
                }
            });
        }
    }

    在BaseActivity的子类的Fragment中使用

    public class MainFragment extends Fragment {
    
        /**
         * 请求用户信息。
         */
        private void requestUserInfo() {
            Request<String> req = NoHttp.createStringRequest(url);
            ((MainActivity)getActivity()).request(0, req, new OnResponseListener<String>() {
                @Override
                public void onStart(int what) {
                    // 请求开始,可以显示一个dialog。
                }
    
                @Override
                public void onSucceed(int what, Response<String> response) {
                    // 请求成功,这里判断服务器的响应码,假如你们服务器200时,才是业务成功:
                    Headers headers = response.getHeaders();
                    if(headers.getResponseCode() == 200) {
                        String result = response.get(); // 拿到结果。
                        }
                }
    
                @Override
                public void onFailed(int what, Response<String> response) {
                    // 请求失败,具体失败类型,请看nohttp主页的demo。
                }
    
                @Override
                public void onFinish(int what) {
                    // 请求结束,关闭dialog。
                }
            });
        }
    
    }

    如果想学习更多的使用方法,建议参考Demo:https://github.com/yanzhenjie/NoHttp
    更多使用介绍请阅读NoHttp文档:doc.nohttp.net

  • 相关阅读:
    POJ2352
    POJ 2524 并查集
    A POJ1611
    树状dp--B
    spring mvc实现文件上传与下载
    Joda-Time
    JAVA对象与JSON之间的转换
    jackson-databind注解
    JPA注解
    springMVC、spring、jpa、springData整合配置
  • 原文地址:https://www.cnblogs.com/ldq2016/p/7473570.html
Copyright © 2011-2022 走看看