NoHttp是专门做Android网络请求与下载的框架,NoHttp基本使用方法如下
本文的例子来自上面的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时停止队列
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。