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) { } };