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

作者:yanzhenjie1003 时间:2022-09-28 17:11:51 

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时停止队列
}

}

来源:http://blog.csdn.net/yanzhenjie1003/article/details/50679905

标签:Android,NoHttp
0
投稿

猜你喜欢

  • 解析StreamReader与文件乱码问题的解决方法

    2022-09-11 18:34:56
  • java如何导出insert语句并生成sql脚本

    2022-05-18 10:33:54
  • Android自定义ImageView实现自动放大缩小动画

    2021-11-07 12:24:48
  • Android之使用Bundle进行IPC详解

    2023-09-27 22:44:56
  • 简单谈谈java自定义注解

    2021-07-21 18:40:53
  • 解决Maven本地仓库明明有对应的jar包但还是报找不到的问题

    2022-07-21 23:12:07
  • C#使用DoddleReport快速生成报表

    2022-05-31 06:39:59
  • SpringSecurity添加图形验证码认证实现

    2023-07-08 01:37:52
  • Java登录功能实现token生成与验证

    2023-11-30 07:57:28
  • 基于C#实现XML文件读取工具类

    2021-10-07 07:42:19
  • C# 使用Dictionary复制克隆副本及比较是否相等

    2021-05-29 21:33:06
  • sharding-jdbc5.0.0实现分表实践

    2023-12-07 10:12:26
  • Java matches类,Pattern类及matcher类用法示例

    2022-02-21 22:39:52
  • C#窗体传值代码方法

    2022-12-03 22:57:37
  • SpringBoot整合Apollo配置中心快速使用详解

    2022-12-25 17:00:34
  • Android Studio新建工程默认在build.gradle中加入maven阿里源的问题

    2023-04-02 06:33:32
  • Android客户端post请求服务器端实例

    2022-10-10 23:49:43
  • C#使用linq对数组进行筛选排序的方法

    2023-12-06 06:21:21
  • 详解spring boot集成ehcache 2.x 用于hibernate二级缓存

    2023-06-25 05:49:44
  • C#实现windows form拷贝内容到剪贴板的方法

    2022-06-01 12:22:15
  • asp之家 软件编程 m.aspxhome.com