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

所属分类: 软件编程 / Android 阅读数: 32
收藏 0 赞 0 分享

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<String> 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<String> onResponseListener = new OnResponseListener<String>() {
  @SuppressWarnings("unused")
  @Override
  public void onSucceed(int what, Response<String> 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时停止队列
 }

}

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

更多精彩内容其他人还在看

Android中加入名片扫描功能实例代码

这篇文章主要介绍了Android中加入名片扫描功能实例代码的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

Android仿微信发表说说实现拍照、多图上传功能

这篇文章主要为大家详细介绍了Android仿微信发表说说实现拍照、多图上传功能,使用Retrofit2.0技术,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

设置Android系统永不锁屏永不休眠的方法

在进行Android系统开发的时候,有些特定的情况需要设置系统永不锁屏,永不休眠。本篇文章给大家介绍Android 永不锁屏,开机不锁屏,删除设置中休眠时间选项,需要的朋友一起学习吧
收藏 0 赞 0 分享

Android Retrofit 2.0框架上传图片解决方案

这篇文章主要介绍了Android Retrofit 2.0框架上传一张与多张图片解决方案,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android自定义等待对话框

这篇文章主要为大家详细介绍了Android自定义等待对话框的实现方法,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android中Window添加View的底层原理

这篇文章主要介绍了Android中Window添加View的底层原理,需要的朋友可以参考下
收藏 0 赞 0 分享

Android调用系统默认浏览器访问的方法

这篇文章主要介绍了Android调用系统默认浏览器访问的方法的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

Android开发退出程序的方法汇总

Android程序有很多Activity,比如说主窗口A,调用了子窗口B,子窗口B又调用子窗口C,back返回子窗口B后,在B中如何关闭整个Android应用程序呢? 下面脚本之家小编就给大家介绍android开发退出程序的几种方法,感兴趣的朋友参考下吧
收藏 0 赞 0 分享

Android程序开发中单选按钮(RadioGroup)的使用详解

在android程序开发中,无论是单选按钮还是多选按钮都非常的常见,接下来通过本文给大家介绍Android程序开发中单选按钮(RadioGroup)的使用,需要的朋友参考下吧
收藏 0 赞 0 分享

Android实现仿网易今日头条等自定义频道listview 或者grideview等item上移到另一个view中

这篇文章主要介绍了Android实现仿网易今日头条等自定义频道listview 或者grideview等item上移到另一个view中 的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多