NoHttp 是专门做Android网络请求与下载的框架。
支持HTTP/HTTPS,自动维持Cookie,异步/同步请求,大文件/多文件上传,文件下载;支持304缓存,302/303重定向,支持代理服务器。
支持HTTP/HTTPS,自动维持Cookie,异步/同步请求,大文件/多文件上传,文件下载,上传下载均有进度。
支持304缓存,自定义缓存,302/303重定向,支持代理服务器访问地址(如: Google)。
NoHttp是队列,自动为请求排队,可以取消指定请求, 可以取消队列所有请求,亦可以停止队列。
支持请求String、Bitmap、Json、JavaBean,可自定义扩展请求类型。
Request对象包涵参数、文件、请求头等;Response对象包涵响应内容,响应头等信息,Cookie。
// 引用最新版 compile 'com.yolanda.nohttp:nohttp:+' // 或则引用指定版本 compile 'com.yolanda.nohttp:nohttp:1.0.0'
1.请求String数据
// 请求对象 Request request = NoHttp.createStringRequest(url, requestMethod); //添加请求头 request.addHeader("AppVersioin", "2.0"); // 添加请求参数 request.add("userName", "yolanda"); //上传文件 request.add("file", new FileBinary(file)); ...
2.请求Json数据
// JsonObject Request request = NoHttp.createJsonObjectRequest(url, reqeustMethod); queue.add(what, request, responseListener); … // JsonArray Request request = NoHttp.createJsonArrayRequest(url, reqeustMethod); queue.add(what, request, responseListener);
3. 请求Bitmap数据
Request request = NoHttp.createImageRequest(url, requestMethod); ...
4. 取消请求
取消单个请求
Request request = NoHttp.createStringRequest(url); ... request.cancel();
从队列中取消指定的请求
Request request = NoHttp.createStringRequest(url); request.setCancelSign(sign); … queue.cancelBySign(sign);
取消队列中所有请求
queue.cancelAll();
停止队列
RequestQueue queue = NoHttp.newRequestQueue(); ... queue.stop();
5. 同步请求
// 在当前线程发起请求,在线程这么使用 Request request = NoHttp.createStringRequest(url); Response response = NoHttp.startRequestSync(request); if (response.isSucceed()) { // 请求成功 } else { // 请求失败 }
1. Http标准协议的缓存,比如响应码是304时
现在很多公司使用了RESTFUL风格来写Http API,所以这个是必须有的。
Request request = NoHttp.createJsonObjectRequest(url); // NoHttp本身是RESTFUL风格的标准Http协议,所以这里不用设置或者设置为DEFAULT request.setCacheMode(CacheMode.DEFAULT); ...
2. 当请求服务器失败的时候,读取缓存
Request request = NoHttp.createJsonObjectRequest(url); // 非标准Http协议,改变缓存模式为REQUEST_FAILED_READ_CACHE request.setCacheMode(CacheMode.REQUEST_FAILED_READ_CACHE); ...
3. 如果发现有缓存直接成功,没有缓存才请求服务器
我们知道ImageLoader的核心除了内存优化外,剩下一个就是发现把内地有图片则直接使用,没有则请求服务器,所以NoHttp这一点非常使用做一个ImageLoader。
Request request = NoHttp.createJsonObjectRequest(url); // 非标准Http协议,改变缓存模式为IF_NONE_CACHE_REQUEST request.setCacheMode(CacheMode.IF_NONE_CACHE_REQUEST); ...
请求图片,缓存图片。
// 如果没有缓存才去请求服务器,否则使用缓存,缓存图片演示 Request request = NoHttp.createImageRequest(imageUrl); request.setCacheMode(CacheMode.IF_NONE_CACHE_REQUEST); ...
4. 仅仅读取缓存
Request request = NoHttp.createJsonObjectRequest(url); // 非标准Http协议,改变缓存模式为ONLY_READ_CACHE request.setCacheMode(CacheMode.ONLY_READ_CACHE); ...
注意:缓存不管是String、Json、图片还是任何请求都可以被NoHttp缓存
二、响应
OnResponseListener responseListener = new OnResponseListener() { @Override public void onStart(int what) { // 请求开始时,可以显示一个Dialog } @Override public void onFinish(int what) { // 请求接受时,关闭Dialog } @Override public void onSucceed(int what, Response response) { // 接受请求结果 String result = response.get(); // Bitmap imageHead = response.get(); // 如果是bitmap类型,都是同样的用法 } @Override public void onFailed(int what, String url, Object tag, Exception exception, ...) { // 请求失败或者发生异常 // 这里根据exception处理不同的错误,比如超时、网络不好等 } };
1.定义请求对象
public class FastJsonRequest extends RestRequestor { public FastJsonRequest(String url) { super(url); } public FastJsonRequest(String url, RequestMethod requestMethod) { super(url, requestMethod); } @Override public JSONObject parseResponse(String url, Headers headers, byte[] responseBody) { String result = StringRequest.parseResponseString(url, headers, responseBody); JSONObject jsonObject = null; if (!TextUtils.isEmpty(result)) { jsonObject = JSON.parseObject(result); } else { // 这里默认的错误可以定义为你们自己的数据格式 jsonObject = JSON.toJSON("{}"); } return jsonObject; } @Override public String getAccept() { // 告诉服务器你接受什么类型的数据, 会添加到请求头的Accept中 return "application/json;q=1"; } }
2.使用自定义请求-和NoHttp默认请求没有区别
Request mRequest = new FastJsonRequest(url, requestMethod); queue.add(what, mRequest, responseListener);
发起下载请求
//下载文件 downloadRequest = NoHttp.createDownloadRequest(url, fielDir, fileName, true, false); // what 区分下载 // downloadRequest 下载请求对象 // downloadListener 下载监听 CallServer.getDownloadInstance().add(0, downloadRequest, downloadListener);
暂停或者停止下载
downloadRequest.cancel();
监听下载过程
private DownloadListener downloadListener = new DownloadListener() { @Override public void onStart(int what, boolean resume, long preLenght, Headers header, long count) { } @Override public void onProgress(int what, int progress, long downCount) { // 更新下载进度 } @Override public void onFinish(int what, String filePath) { } @Override public void onDownloadError(int what, StatusCode code, CharSequence message) { } @Override public void onCancel(int what) { } };
NoHttp 是专门做Android网络请求与下载的框架。 支持HTTP/HTTPS,自动维持Cookie,异步/同步请求,大文件/多文件上传,文件下载;支持304缓存,302/303重定向,支持代理服务器。 NoHttp特性: 支持HTTP/HTTPS,自动维持Cookie,异步/同步请求,大文件/多文件上传,文件下载,上传下载均有进度。 支持304缓存,自定义缓存,302/303重定向,支持代
NoHttp (NoHttp QQ交流群:46523908, NoHttp官方 E-mail: nohttp@foxmail.com) NoHttp是专门做Android网络请求与下载的框架. NoHttp 源码及Demo https://github.com/Y0LANDA/NoHttp 前言 NoHttp是一个专门做Android网络相关的框架. 随着Android弃用HttpClient
NoHttp是一个开源的Android网络请求封装库,简化了编码中网络请求操作,为URLConnection、OkHttp提供统一访问接口。 一、配置 NoHttp作为一个第三方库,应用的第一步是在App build.gradle中将其添加为依赖,代码如下: implementation 'com.yanzhenjie.nohttp:nohttp:1.1.11' NoHttp默认使用URL
NoHttp封装 技术交流1群:46523908 技术交流2群:46505645 官方E-mail:nohttp@foxmail.com NoHttp 源码及Demo托管在Github欢迎大家Star: https://github.com/Y0LANDA/NoHttp NoHttp是专门做Android网络请求与下载的框架。 前言 1. 下笔前的分析 网络操作无非最基础的是manifest中的权
Nohttp类似于volley的升级版,其使用步骤基本一致 特点: 1.多种请求方式并发调用,支持get,post,put等网络解析方式 2.文件上传,文件下载,下载进度回调,错误回调,支持暂停继续下载,支持取消大文件上传,不会发生OOM,支持File,InputStream,ByteArray,Bitmap,实现NOhttp的 Binary接口,理论上任何东西都可以穿, 3.支持取消某个请求,取
作者的博客地址:https://github.com/yanzhenjie Android Http 网络请求框架,封装于 NoHttp。 Android实现Http标准协议框架,支持多种缓存模式,底层可动态切换OkHttp、URLConnection。 githumb的地址:https://github.com/lishide/NoHttpConnecter 基于 NoHttp 的封装,主要包括
基于 NoHttp 的封装,主要包括字符串、Bitmap、JsonArray 等的 GET 和 POST 请求、文件上传下载方法的简单封装,以及五种缓存模式的使用。 首先对 NoHttp 网络框架做一个简介 Nohttp 是一个 Android Http 标准框架,底层可动态切换 OkHttp、URLConnection,与 RxJava 完美结合,支持缓存数据到数据库或 SD 卡(缓存数据自动加
Nohttp Xutils过时:底层使用的httpclient封装。在okhttp出现5.0后被替换。 Nohttp是一个流行http库 标准:get post 文件下载 文件上传 底层有两种. 1.httpurlConnection 2.Okhttp 使用步骤 依赖 //步骤一。依赖 as不需要绑定源代码 因为complie会去中央仓库jcenter.下载jar与源代码 compile 'co
Engineering Rob Winch June 10, 2019 I’m pleased to announce the nohttp project, which lets users find, replace, and prevent the usage of http://. Background Today, Jonathan Leitschuh published a blog
框架特性 比Retrofit使用更简单、更易用。 动态配置底层框架为OkHttp、HttpURLConnection 与RxJava完美结合,支持异步请求、支持同步请求 多文件上传,支持大文件上传,表单提交数据 文件下载、上传下载、上传和下载的进度回调、错误回调 支持Json、xml、Map、List的提交 完美的Http缓存模式,可指定缓存到数据库、SD卡,缓存数据已安全加密 在6.0以上手机缓
wget 命令 wget url #下载文件 wget -O demo.html url #下载文件并改为指定名称 wget -c url #断点续传 wget -i url url url #下载多个文件 wget -t 5 url #网络不好时重试 5 次 wget -t 0 url #不断重试 wget --limit-rate 20k url #限速下载 wget -Q 10
Mpx提供了网络请求库fetch,抹平了微信,阿里等平台请求参数及响应数据的差异;同时支持请求拦截器,请求取消等 使用说明 import mpx from '@mpxjs/core' import mpxFetch from '@mpxjs/fetch' mpx.use(mpxFetch) // 第一种访问形式 mpx.xfetch.fetch({ url: 'http://xxx.com' }
本文向大家介绍Flutter 网络请求框架封装详解,包括了Flutter 网络请求框架封装详解的使用技巧和注意事项,需要的朋友参考一下 Flutter 请求网络的三种方式 flutter 请求网络的方式有三种,分别是 Dart 原生的网络请求 HttpClient、第三方网络请求 http以及 Flutter 中的 Dio。我们可以比较一下这三种网络请求方式,然后封装为我们方便请求网络的工具类。
类似于Ajax,QAP实现了Fetch功能,能够简单的异步的获取资源。 GET QN.fetch('http://121.42.141.44:8888', { body: '', method: 'GET', mode: 'same-origin', dataType: 'text', }) .then(response => { return respon
request 指的是小程序中的网络请求,在 mpvue 框架中可以通过小程序提供的原生 API wx.request 来进行相关的处理。但是在这里推荐一个第三方的网络请求库 fly。之所以推荐这个第三方库,是因为可以在多个端上实现代码的复用,目前已支持的有 Node.js 、微信小程序 、Weex 、React Native 、Quick App。 在 mpvue 中如何使用 安装 npm in
Chrome提供了较为完整的方法供扩展程序分析、阻断及更改网络请求,同时也提供了一系列较为全面的监听事件以监听整个网络请求生命周期的各个阶段。网络请求的整个生命周期所触发事件的时间顺序如下图所示。 网络请求的生命周期,图片来自developer.chrome.com 要对网络请求进行操作,需要在Manifest中声明webRequest权限以及相关被操作的URL。如需要阻止网络请求,需要声明web
BaaS 提供 wx.BaaS.request(OBJECT) 接口用于调用 API。 wx.BaaS.request() 相比 wx.request() 的优势: 支持 Promise 规范 方便 BaaS 分析接口调用状况 无需关心微信 wx.request() 方法是否更新 自动配置必要的参数 OBJECT 参数说明 参数 类型 必填 说明 url String 是 接口地址 method
本文向大家介绍Android最基本的异步网络请求框架,包括了Android最基本的异步网络请求框架的使用技巧和注意事项,需要的朋友参考一下 本篇文章我们来一起写一个最基本的Android异步网络请求框架,借此来了解下Android中网络请求的相关知识。由于个人水平有限,文中难免存在疏忽和谬误,希望大家可以指出,谢谢大家。 1. 同步网络请求 以HTTP的GET请求为例,我们来介绍一下An