热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

Android详解之NoHttp最基本使用(无封装)

这篇文章主要介绍了Android详解之NoHttp最基本使用,无封装,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

NoHttp是专门做Android网络请求与下载的框架,NoHttp基本使用方法如下

本文demo源码下载地址: http://xiazai.jb51.net/201609/yuanma/AndroidNoHttp(jb51.net).rar

本文的例子来自上面的demo中的OriginalActivity中。

代码

对于新手, 看别人封装好的代码允许要稍微吃力一点,尤其是一个框架,所以我们先看NoHttp最原始的使用方法:

public class OriginalActivity extends BaseActivity implements View.OnClickListener {

 /**
  * 用来标志请求的what, 类似handler的what一样,这里用来区分请求
  */
 private static final int NOHTTP_WHAT_TEST = 0x001;

 /**
  * 请求的时候等待框
  */
 private WaitDialog mWaitDialog;

 /**
  * 请求队列
  */
 private RequestQueue requestQueue;

 @Override
 protected void onActivityCreate(Bundle savedInstanceState) {
  setTitle(Application.getInstance().nohttpTitleList[0]);
  setContentView(R.layout.activity_original);
  // 按钮点击监听
  findView(R.id.btn_start).setOnClickListener(this);

  mWaitDialog = new WaitDialog(this);

  // 创建请求队列, 默认并发3个请求, 传入数字改变并发数量: NoHttp.newRequestQueue(1);
  requestQueue = NoHttp.newRequestQueue();
 }

 @Override
 public void onClick(View v) {
  // 创建请求对象
  Request request = NoHttp.createStringRequest(url, RequestMethod.POST);

  // 添加请求参数
  request.add("userName", "yolanda");
  request.add("userPass", 1);
  request.add("userAge", 1.25);

  // 上传文件
  request.add("userHead", new FileBinary(new File(path)));

  // 添加请求头
  request.addHeader("Author", "nohttp_sample");

  // 设置一个tag, 在请求完(失败/成功)时原封不动返回; 多数情况下不需要
  // request.setTag(object);

  /*
   * what: 当多个请求同时使用同一个OnResponseListener时用来区分请求, 类似handler的what一样
   * request: 请求对象
   * onResponseListener 回调对象,接受请求结果
   */
  requestQueue.add(NOHTTP_WHAT_TEST, request, onResponseListener);
 }

 /**
  * 回调对象,接受请求结果
  */
 private OnResponseListener OnResponseListener= new OnResponseListener() {
  @SuppressWarnings("unused")
  @Override
  public void onSucceed(int what, Response response) {
   if (what == NOHTTP_WHAT_TEST) {// 判断what是否是刚才指定的请求
    // 请求成功
    String result = response.get();// 响应结果
    // 响应头
    Headers headers = response.getHeaders();
    headers.getResponseCode();// 响应码
    response.getNetworkMillis();// 请求花费的时间
   }
  }

  @Override
  public void onStart(int what) {
   // 请求开始,显示dialog
   mWaitDialog.show();
  }

  @Override
  public void onFinish(int what) {
   // 请求结束,关闭dialog
   mWaitDialog.dismiss();
  }

  @Override
  public void onFailed(int what, String url, Object tag, CharSequence error, int resCode, long ms) {
   // 请求失败
   ...
  }
 };

 @Override
 protected void onDestroy() {
  super.onDestroy();
  requestQueue.cancelAll();// 退出APP时停止所有请求
  requestQueue.stop();// 退出APP时停止队列
 }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • 深入解析Java中的锁类型及其应用场景
    本文详细介绍了Java中常见的锁类型,包括乐观锁与悲观锁、独占锁与共享锁、互斥锁与读写锁、可重入锁、公平锁与非公平锁、分段锁、偏向锁、轻量级锁、重量级锁以及自旋锁。每种锁的特性、作用及适用场景均有所涉及。 ... [详细]
  • A题简单判断#includeusingnamespacestd;typedeflonglongll;intt;intmain(){cint;whil ... [详细]
  • WorldWind源代码解析:瓦片调度机制详解
    本文深入探讨了WorldWind项目中的关键组件——瓦片调度策略。通过源代码分析,我们将了解摄像头移动时如何动态调整瓦片的加载与卸载,确保地图渲染的高效与流畅。 ... [详细]
  • 深度兴趣网络在点击率预测中的应用研究
    本文探讨了一种名为深度兴趣网络(Deep Interest Network, DIN)的新方法,该方法通过捕捉用户的历史行为和当前上下文之间的交互来提高点击率预测的准确性。DIN模型不仅考虑了用户的静态偏好,还动态地调整了对不同商品的兴趣权重,从而实现了更加个性化的推荐。 ... [详细]
  • OpenSesame for Mac: AE项目格式高效编辑工具
    OpenSesame for Mac 是一款强大的插件,专为After Effects设计,能够帮助用户创建向后兼容的AE项目,或将项目中的特定部分导出至文本、素材、属性值及渲染队列项等,便于在电子表格中进行编辑。 ... [详细]
  • java锁策略
    文章目录锁的分类一、乐观锁VS悲观锁二、读写锁三、可重入锁VS不可重入锁四、重量级锁VS轻量级锁五、公平锁VS非公平锁六、自旋锁VS挂起等待锁七、锁升级策略1、无锁: ... [详细]
  • 线程是创建并发的底层工具,因此具有一定的局限性。没有简单的方法可以从联合(Join)线程得到“返回值”。因此必须创建一些共享域。当抛出一个异常时,捕捉和处理异常也是麻烦的。线程完成之后,无法再次启动该 ... [详细]
  • 本文详细探讨了 Java 中 Daemon 线程的特点及其应用场景,并深入分析了 Random 类的源代码,帮助开发者更好地理解和使用这些核心组件。 ... [详细]
  • 本文档详细介绍了服务器与应用系统迁移的策略与实施步骤。迁移不仅涉及数据的转移,还包括环境配置、应用兼容性测试等多个方面,旨在确保迁移过程的顺利进行及迁移后的系统稳定运行。 ... [详细]
  • 图像中的边缘信息主要集中在高频部分,因此图像锐化或边缘检测实质上是进行高频滤波。微分运算能够增强信号的高频成分,从而在空间域中通过计算微分实现图像锐化。本文将详细介绍如何使用 Python 实现 Canny 边缘检测算法。 ... [详细]
  • ZooKeeper 客户端写操作后立即读取数据的机制解析
    本文深入探讨 ZooKeeper 客户端如何确保在执行写操作后能够正确读取到刚刚写入的数据,特别是在分布式环境下的实现细节。 ... [详细]
  • 本文探讨了命令模式和责任链模式在软件设计中的应用,详细介绍了这两种模式的基本概念、UML图示、主要组成部分及其优缺点。特别关注了命令模式如何通过命令转发实现调用者与接收者之间的解耦,以及责任链模式如何通过顺序传递请求来调整处理逻辑。 ... [详细]
  • 自 Swift 3.0 以来,Grand Central Dispatch (GCD) 的使用方式有了显著的变化,变得更加简洁高效。本文将介绍 GCD 的核心概念,包括队列、同步与异步操作、服务质量 (QoS) 以及常见的使用场景。 ... [详细]
  • scrapyredis分布式爬虫 ... [详细]
  • 本文详细介绍了RocketMQ中的消息并发消费机制,包括消息拉取后的处理流程、消费服务的调用以及消费任务的具体执行过程。 ... [详细]
author-avatar
广东佳山七郎
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有