首页 > 系统 > Android > 正文

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

2019-12-12 05:18:07
字体:
来源:转载
供稿:网友

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

本文demo源码下载地址: http://xiazai.VeVB.COm/201609/yuanma/AndroidNoHttp(VeVB.COm).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时停止队列 }}

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表