1、添加noHttp的使用权限

<!-- 读写 sd 卡 -->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <!-- 联网 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- 读取网络状态 -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

2、依赖noHttp开发库

 compile 'com.yolanda.nohttp:nohttp:1.1.0'
  compile 'com.yanzhenjie.nohttp:okhttp:1.1.0'
  nohttp的底层 1.httpurlconnection 2.okhttp

3、要求在Application对nohttp进行初始化

public class MyApp extends Application{
        @Override
        public void onCreate() {
        super.onCreate();
        // 步骤三。要求在 application 对 nohttp 进行初始化
        // NoHttp.initialize(this);
        //3.1. 创建框架的配置参数对象
        NoHttp.Config config=new NoHttp.Config();
        //3.2. 连接超时
        config.setConnectTimeout(5000);
        //3.3. 设置底层 , 底层是 OkHttp
        config.setNetworkExecutor(new OkHttpNetworkExecutor());
        NoHttp.initialize(this,config);
        }
    }

4、在清单文件中注册application

<application android:allowBackup="true" android:icon="@mipmap/ic_launcher"
    android:name=".MyApp"    

5、创建请求并进行发送 处理服务端返回的数据

public class HttpUtil {
        private static RequestQueue sRequestQueue;
        public static void get(String url, OnResponseListener<String> listener) {
            StringRequest request = new StringRequest(url, RequestMethod.GET);
            if (sRequestQueue == null) {
                //创建请求队列
                sRequestQueue = NoHttp.newRequestQueue();
            }
                request.setCacheMode(CacheMode.NONE_CACHE_REQUEST_NETWORK);
                sRequestQueue.add(0, request, listener);
            }
    }

注:StringRequest: 返回结果为 String(json/xml) 的请求,使用最广泛的请求对象
    RequestQueue :用来发送请求的。支持子线程
    OnResponseListener :回调对象 | 监听器 提供空方法来编写处理逻辑 ## 步骤五。调用例子

6、设置响应的监听

OnResponseListener<String> listener = new OnResponseListener<String>() {
        // 网络请求开始的界面显示
        @Override
        public void onStart(int what) {

        }
        // 网络请求结束的界面显示
        @Override
        public void onFinish(int what) {

        }
        // 结果成功的情况
        @Override
        public void onSucceed(int what, Response<String> response) {

        }
        // 结果失败的情况
        @Override
        public void onFailed(int what, Response<String> response) {
            
        }
    };

 

posted on 2017-01-11 19:11  从前有個人  阅读(875)  评论(0编辑  收藏  举报