1、添加noHttp的使用权限

  1. <!-- 读写 sd 卡 -->
  2. <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  3. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  4. <!-- 联网 -->
  5. <uses-permission android:name="android.permission.INTERNET" />
  6. <!-- 读取网络状态 -->
  7. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  8. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

2、依赖noHttp开发库

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

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

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

4、在清单文件中注册application

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

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

  1. public class HttpUtil {
  2. private static RequestQueue sRequestQueue;
  3. public static void get(String url, OnResponseListener<String> listener) {
  4. StringRequest request = new StringRequest(url, RequestMethod.GET);
  5. if (sRequestQueue == null) {
  6. //创建请求队列
  7. sRequestQueue = NoHttp.newRequestQueue();
  8. }
  9. request.setCacheMode(CacheMode.NONE_CACHE_REQUEST_NETWORK);
  10. sRequestQueue.add(0, request, listener);
  11. }
  12. }

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

6、设置响应的监听

  1. OnResponseListener<String> listener = new OnResponseListener<String>() {
  2. // 网络请求开始的界面显示
  3. @Override
  4. public void onStart(int what) {
  5.  
  6. }
  7. // 网络请求结束的界面显示
  8. @Override
  9. public void onFinish(int what) {
  10.  
  11. }
  12. // 结果成功的情况
  13. @Override
  14. public void onSucceed(int what, Response<String> response) {
  15.  
  16. }
  17. // 结果失败的情况
  18. @Override
  19. public void onFailed(int what, Response<String> response) {
  20.  
  21. }
  22. };

Nohttp框架在Android Studio中的使用的更多相关文章

  1. 在Android Studio中进行单元测试和UI测试

    本篇教程翻译自Google I/O 2015中关于测试的codelab,掌握科学上网的同学请点击这里阅读:Unit and UI Testing in Android Studio.能力有限,如有翻译 ...

  2. Android studio中导入第三方类库

    常常在github上看到一些好用的框架,但是对于一个新手怎样在android studio上导入去总会遇到各种麻烦,索性来研究下第三方类库怎样在android studio上导入. 以我在github ...

  3. android studio 中移除module和恢复module

    一.移除Android Studio中module 在Android Studio中想要删除某个module时,在Android Studio中选中module,右键发现没有delete,如图: An ...

  4. Android Studio中Button等控件的Text中字符串默认大写的解决方法

    初学Android的时候,在Android Studio中xml里面添加一个Button.EditText等控件后,它的Text总是会显示大写,即使你输入的字符串是小写也不行,控制字符串大小写的属性是 ...

  5. .Net程序员之不学Java做安卓开发:Android Studio中的即时调试窗口

    对学.Net的人来说,JAVA开发是一场噩梦. .net中的即时窗口,调试时直接在里面写代码,对程序中的各种方法/属性进行调用,很方便. Android Studio中找了好久,参考如下网址,也有类似 ...

  6. 如何将Eclipse中的项目迁移到Android Studio 中

    如何将Eclipse中的项目迁移到Android Studio 中 如果你之前有用Eclipse做过安卓开发,现在想要把Eclipse中的项目导入到Android Studio的环境中,那么首先要做的 ...

  7. Android开发的小技巧,在Android Studio中使用Designtime Layout Attributes

    在编写xml文件时,为了预览效果,经常会使用默认填上一些内容,比如TextView时,随便写上一个text <TextView ... android:text="Name:" ...

  8. 在android studio 中使用applicationid的问题

    现在我需要对项目app的某个功能做性能测试,主要测试耗电量的多少. 1.我想到的方式是,我需要在同一台手机测试,同一个应用,需要安装在手机两次,第二次安装不覆盖第一次的安装. 在android stu ...

  9. Android studio 中的配置编译错误总结

    1.编译Andorid 工程的时候,有时候出现gradle 报下面的错误. Error:(1, 0) Cause: com/android/build/gradle/LibraryPlugin : U ...

随机推荐

  1. 一个简单的string类,读书看报系列(一)

    对于这个类,写过程序的都知道应该含有的方法是 初始化.销毁.拼接.求长度.清除.判断是否为空等.还有一些操作符重载 一.先看初始化: 可以想到应该有默认构造的的.带有字符串的.带有默认字符的.还有一个 ...

  2. 在html页面中展示JSON

    背景: 有时候我们需要将json数据直接显示在页面上(比如在做一个接口测试的项目,需要将接口返回的结果直接展示),但是如果直接显示字符串,不方便查看.需要格式化一下. 解决方案: 其实JSON.str ...

  3. Java多线程基础——线程间通信

    在使用多线程的时候,经常需要多个线程进行协作来完成一件事情.在前面两章分析了Java多线程的基本使用以及利用synchronized来实现多个线程同步调用方法或者执行代码块.但上面两章的内容涉及到的例 ...

  4. MVC源码解析 - UrlRoutingModule / 路由注册

    从前面篇章的解析, 其实能看的出来, IHttpModule 可以注册很多个, 而且可以从web.config注册, 可以动态注册. 但是有一个关键性的Module没有讲, 这里就先来讲一下这个关键性 ...

  5. 关于angularjs的$state.go()与ui-sref传参问题

    上次转发过关于angularjs回退的文章,回退用到的还是js的回退功能,直接用history.back();实现功能,当时顺便提了下$state.go()有关路由跳转. 那这回就全面解析下$stat ...

  6. saltstack布署实践 【配置文件管理-state模块】

    那如果要批量修改被管机器的某个配置文件怎么做?以下给出一个最简单案例.   先在主管机器master上查看/etc/salt/master配置文件 看到有以下几行配置文件   # file_roots ...

  7. eclipse安装

    1.下载破解版本 地址:http://www.oyksoft.com/soft/1250.html 2.解压下载包,直接运行eclipse.exe  3.安装过程中如果遇到问题 1).如果遇到erro ...

  8. CodeForces 415D Mashmokh and ACM

    $dp$. 记$dp[i][j]$表示已经放了$i$个数字,并且第$i$个数字放了$j$的方案数.那么$dp[i][j] = \sum\limits_{k|j}^{}  {dp[i - 1][k]}$ ...

  9. GTK+2.0学习——第一个GTK程序

    #include <gtk/gtk.h> #include <stdio.h> #include <stdlib.h> /* *点击了关闭按钮之后的回调函数 *gt ...

  10. TypeScript -- 面向对象特性

    .class关键字和类名就可以定义一个类 . 类的访问控制符--有三个,.] = ] = ] = ;.声明参数 .用接口声明方法 .理解模块--一个文件就是一个模块,就是这么个意思 ,不用想的多么高大 ...