基于AFNetworking3.0封装网络请求功能,API面向业务层更友好,基础功能包括GET、POST、下载、单文件上传、多文件上传、取消网络请求。此外还拓展出了缓存功能,缓存分为内存缓存和磁盘缓存。
将XDNetworking包拉进工程
#import "XDNetworking.h"
GET请求
/** * GET请求 * * @param url 请求路径 * @param cache 是否缓存 * @param refresh 是否刷新请求(遇到重复请求,若为YES,则会取消旧的请求,用新的请求,若为NO,则忽略新请 求,用旧请求) * @param params 拼接参数 * @param progressBlock 进度回调 * @param successBlock 成功回调 * @param failBlock 失败回调 * * @return 返回的对象中可取消请求 */ + (XDURLSessionTask *)getWithUrl:(NSString *)url refreshRequest:(BOOL)refresh cache:(BOOL)cache params:(NSDictionary *)params progressBlock:(XDGetProgress)progressBlock successBlock:(XDResponseSuccessBlock)successBlock failBlock:(XDResponseFailBlock)failBlock;
POST请求
/** * POST请求 * * @param url 请求路径 * @param cache 是否缓存 * @param refresh 解释同上 * @param params 拼接参数 * @param progressBlock 进度回调 * @param successBlock 成功回调 * @param failBlock 失败回调 * * @return 返回的对象中可取消请求 */ + (XDURLSessionTask *)postWithUrl:(NSString *)url refreshRequest:(BOOL)refresh cache:(BOOL)cache params:(NSDictionary *)params progressBlock:(XDPostProgress)progressBlock successBlock:(XDResponseSuccessBlock)successBlock failBlock:(XDResponseFailBlock)failBlock;
下载请求
/** * 文件下载 * * @param url 下载文件接口地址 * @param progressBlock 下载进度 * @param successBlock 成功回调 * @param failBlock 下载回调 * * @return 返回的对象可取消请求 */ + (XDURLSessionTask *)downloadWithUrl:(NSString *)url progressBlock:(XDDownloadProgress)progressBlock successBlock:(XDDownloadSuccessBlock)successBlock failBlock:(XDDownloadFailBlock)failBlock;
文件上传
/** * 文件上传 * * @param url 上传文件接口地址 * @param data 上传文件数据 * @param type 上传文件类型 * @param name 上传文件服务器文件夹名 * @param mimeType mimeType * @param progressBlock 上传文件路径 * @param successBlock 成功回调 * @param failBlock 失败回调 * * @return 返回的对象中可取消请求 */ + (XDURLSessionTask *)uploadFileWithUrl:(NSString *)url fileData:(NSData *)data type:(NSString *)type name:(NSString *)name mimeType:(NSString *)mimeType progressBlock:(XDUploadProgressBlock)progressBlock successBlock:(XDResponseSuccessBlock)successBlock failBlock:(XDResponseFailBlock)failBlock;
多文件上传
/** * 多文件上传 * * @param url 上传文件地址 * @param datas 数据集合 * @param type 类型 * @param name 服务器文件夹名 * @param mimeType mimeTypes * @param progressBlock 上传进度 * @param successBlock 成功回调 * @param failBlock 失败回调 * * @return 任务集合 */ + (NSArray *)uploadMultFileWithUrl:(NSString *)url fileDatas:(NSArray *)datas type:(NSString *)type name:(NSString *)name mimeType:(NSString *)mimeTypes progressBlock:(XDUploadProgressBlock)progressBlock successBlock:(XDMultUploadSuccessBlock)successBlock failBlock:(XDMultUploadFailBlock)failBlock;
取消所有网络请求
+ (void)cancleAllRequest;
取消下载请求
+ (void)cancelRequestWithURL:(NSString *)url;
获取缓存大小
/** * 获取缓存大小 * * @return 缓存大小 */ + (unsigned long long)totalCacheSize;
清理缓存
/** * 清除所有缓存 */ + (void)clearTotalCache;
自动清理缓存
//每次网络请求的时候,检查此时磁盘中的缓存大小,如果超过阈值,则清理所有缓存 //未来优化点:1、这里到时会做进一步优化,到时会有两种清理策略,一种基于时间维度,一种基于缓存大小, // 2、清理也不会清理全部,会采取LRU算法来淘汰在磁盘中价值最低的缓存 if ([self totalCacheSize] > CACHEMAXSIZE) [self clearTotalCache];
获取当前正在运行的任务
/** * 正在运行的网络任务 * * @return */ + (NSArray *)currentRunningTasks;
1. 对于cache与否,到时大家针对自己的业务数据的特征来决定是否开启cache,即时性或时效性的数据建议不开启缓存,一般建议开启,开启缓存后会回调两次,第一次获取是缓存数据,第二次获取的是最新的网络数据;
2. 新版本多了一个刷新请求参数,设置它是为了解决重复请求的问题,举个例子,当我们在列表里面上拉获取更多数据的时候,有时候因为网络慢,还没有回调响应刷新出数据,这时候我们可能不断去上拉列表,如果业务层不判断,就会发起很多重复的请求。遇到重复请求,若参数设为YES,则会取消旧的请求,用新的请求,若设为NO,则忽略新请求,用旧请求。
3. 具体使用的时候,建议面向业务层再封装一次Service层或者将网络请求写进MVVM的viewModel中,向controller暴露只面向业务的参数。
1. 为缓存添加相应的缓存淘汰算法LRU;
2. 再封装面向业务更友好的manager,管理业务层的API,使其方便在不同网络环境下切换(测试环境与正式环境......)
本文向大家介绍基于NIO的Netty网络框架(详解),包括了基于NIO的Netty网络框架(详解)的使用技巧和注意事项,需要的朋友参考一下 Netty是一个高性能、异步事件驱动的NIO框架,它提供了对TCP、UDP和文件传输的支持,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果。 Netty的优点有: a、功
网络基础 在互联网上之间的通信交流,一般是基于 TCP (Transmission Control Protocol,传输控制协议) 或者 UDP (User Datagram Protocol,用户数据报协议) ,如下图: 编写 Java 应用,我们只需关注于应用层 (application layer),而不用关心 TCP 和 UDP 所在的传输层是如何实现的。java.net 包含了你编程所
网络是两个或更多个设备的组,它们彼此连接以共享数据或共享资源。 网络包含许多通过物理或无线连接(如服务器或路由器)连接的不同计算机系统。 此路由器可直接访问互联网。 设备只能通过路由器或接入点连接到互联网。 例如:假设客户端或设备通过Wi-Fi或以太网连接到网络。 如果客户端打开浏览器并键入:,那么您的计算机将向路由器发送请求询问。 路由器将上网并请求。 路由器将接收并将该响应转发给计算机。 现在
基础网络主要用于为宿主机、计算主机等提供IP地址资源等。主要包括全局VPC、VPC、、二层网络、IP子网、预留IP。 全局VPC 全局VPC属于“全局”资源,没有“区域”属性,属于全局VPC的VPC网络之间可以互相通信。 VPC 专有网络VPC是一块逻辑隔离的网络空间。 二层网络 二层网络对应物理网络中的一个广播域,具有网络隔离的作用。 IP子网 IP子网用于为虚拟机、宿主机等资源提供IP地址。
概述 ISO七层原理: 路由和交换 CIDR A类地址 B类地址 C类地址 Linux网络结构 网络诊断 参考
网络模型 各个组织或企业对网络模型定义有所不同,但目前最常见的定义有一下三种。 TCP/IP 五层模型 物理层 - 物理层表示与计算机互连的物理设备,其中还包括将物理设备连接在一起的网线、光缆、连接器的规范,以及描述如何通过这些连接发送信号的规范。 数据链路层 - 物理层仅仅涉及到的是光缆、连接器和信号发送,数据链路层负责定义解释这些信号的通用方法,以便网络设备可以进行通信。 该层中最常见的协议是