NoHttp

生活百科 2023-01-17 20:00生活百科www.aizhengw.cn

NoHttp

NoHttp是一个开源的Android网路框架,代码託管在Github。 支持并发,支持异步/同步请求,自动维持Cookie,大档案/多档案上传,档案下载。支持304快取,302/303重定向,支持通过代理请求。

NoHttp提供了jar包、源码、gradle依赖等方式给开发者使用,开发者可以根据自身情况进行选择。

NoHttp支持Android2.2及以上版本,内部使用HttpURLConnection请求网路,为OkHttp提供了接口,可以把HttpURLConnection替换为OkHttp作为socket层,不过Android4.4以上内部HttpURLConnection已经是用OkHttp实现了。

NoHttp是基于伫列的形式请求,可以取消某个请求,可以取消某几个指定请求,可以通过伫列取消所有请求。

NoHttp旨在为开发者提供一个简单、方便、高效、功能全、体积小的http网路框架。

基本介绍

  • 中文名NoHttp
  • 外文名NoHttp
  • 作者YOLANDA
  • 是否开源
  • 适用平台Android
  • 定位最好用的Android网路框架

历史发展

NoHttp最早是使用Httpclient做了些简单的封装,只是在公司内部使用。后来随着Android弃用了Httpclient后,NoHttp换用HttpURLConnection做了封装,直到Android6.0时Android SDK删除了HttpClient的api后才真正的有了NoHttp。于是做了大量的重构工作,把NoHttp从项目中独立出来,做了开源。
在Android4.4开始系统的HttpURLConnection使用OkHttp的接口实现,NoHttp也对OkHttp做了支持,所以NoHttp是支持Android2.2-以上版本的。
目前NoHttp的源码託管在Github上,提供了源码、jar包、demo、gradle依赖等使用方式,作者建立了QQ谘询群,也在CSDN上开了部落格介绍NoHttp的各种使用方法与问题解答,所以对于国内的开发者来说是一个不错的选择。

特性

  • 支持HTTP/HTTPS,自动维持Cookie,异步/同步请求,大档案/多档案上传,档案下载。
  • 支持304快取,302/303重定向,支持通过代理伺服器访问地址。
  • NoHttp是伫列,自动为请求排队,可以取消指定请求,可以取消伫列所有请求,亦可以停止伫列。
  • 支持请求String、Bitmap、JsonObject、可自定义扩展请求类型(demo中的FastJsonRequest等)
  • API使用简单,Request对象包涵参数、档案、请求头等;Response对象包涵回响内容, 回响头等信息。

发起请求

创建请求伫列
RequestQueue queue = NoHttp.newRequestQueue();
请求String数据
Request<String> request = NoHttp.createStringRequest(url);request.add("userName", "yolanda");request.add("file", new FileBinary(file));queue.add(0, request, responseListener);
请求Bitmap数据
Request<Bitmap> request = NoHttp.createImageRequest(url);queue.add(what, request, responseListener);
请求Json数据
// JsonObjectRequest<JSONObject> request = NoHttp.createJsonObjectRequest(url);queue.add(what, request, responseListener);...// JsonArrayRequest<JSONArray> request = NoHttp.createJsonArrayRequest(url);queue.add(what, request, responseListener);
子执行绪同步请求
// 在当前执行绪发起请求,线上程这幺使用Request<String> request = NoHttp.createStringRequest(url);Response<String> response = NoHttp.startRequestSync(request);if (response.isSucceed()) {    // 请求成功} else {    // 请求失败}

接受请求结果

以接受String结果为例,其它雷同
OnResponseListener<String> responseListener = new OnResponseListener<>() {    // 请求开始时,可以显示一个Dialog    public void onStart(int what) {}    // 请求接受时,关闭Dialog    public void onFinish(int what) {}    // 接受请求结果    public void onSucceed(int what, Response<String> response) {        // 拿到请求结果        String result = response.get();    }    // 请求失败或者发生异常    public void onFailed(int what, String url, String error) {}};

取消请求

取消单个请求
Request<String> request = NoHttp.createStringRequest(url);...request.cancel();
取消伫列中的指定请求
Request<String> request = NoHttp.createStringRequest(url);request.setCancelSign(sign);...queue.cancelBySign(sign);// 取消用sign标誌的请求
取消所有请求
queue.cancelAll();
停止伫列
queue.stop();

档案下载模组

创建下载伫列
RequestQueue queue = NoHttp.newDownloadRequestQueue();
发起下载请求
//下载档案DownloadRequest downloadRequest = NoHttp.createDownloadRequest(url);// what 区分下载// downloadRequest 下载请求对象// downloadListener 下载监听queue.add(0, downloadRequest, downloadListener);
暂停/停止下载
downloadRequest.cancel();
监听下载过程/进度
private DownloadListener downloadListener = new DownloadListener() {    // 开始下载    public void onStart(int what, Headers header, long count) {}    // 下载进度变化    public void onProgress(int what, int progress, long downCount) {        // progress就是进度值    }    // 下载完成    public void onFinish(int what, String filePath) {}    // 下载出错    public void onDownloadError(int what, String error) {}    // 下载暂停或者取消    public void onCancel(int what) {}};
上一篇:OSI模型 下一篇:Lennox Pawle

Copyright@2015-2025 www.aizhengw.cn 癌症网版板所有