All Projects → wang542413041 → Wwnetworkhelper

wang542413041 / Wwnetworkhelper

Licence: mit
AFN层级更高的网络请求API

Projects that are alternatives of or similar to Wwnetworkhelper

Xmnetworking
A lightweight but powerful network library with simplified and expressive syntax based on AFNetworking.
Stars: ✭ 980 (+782.88%)
Mutual labels:  networking, afnetworking
Netfox
A lightweight, one line setup, iOS / OSX network debugging library! 🦊
Stars: ✭ 3,188 (+2772.07%)
Mutual labels:  networking, afnetworking
App Examples
Miro Apps Examples
Stars: ✭ 108 (-2.7%)
Mutual labels:  sdk
Swiftwebsocket
Fast Websockets in Swift for iOS and OSX
Stars: ✭ 1,483 (+1236.04%)
Mutual labels:  networking
Qcloud Iot Sdk Embedded C
SDK for connecting to Tencent Cloud IoT from a device using embedded C.
Stars: ✭ 109 (-1.8%)
Mutual labels:  sdk
Web3sdk
java sdk for FISCO BCOS
Stars: ✭ 108 (-2.7%)
Mutual labels:  sdk
Rxalamofire
RxSwift wrapper around the elegant HTTP networking in Swift Alamofire
Stars: ✭ 1,503 (+1254.05%)
Mutual labels:  networking
Python Scaleway
🐍 Python SDK to query Scaleway APIs.
Stars: ✭ 107 (-3.6%)
Mutual labels:  sdk
Dualsense Windows
Windows API for the PS5 DualSense controller
Stars: ✭ 111 (+0%)
Mutual labels:  sdk
Flow Go Sdk
Tools for building Go applications on Flow 🌊
Stars: ✭ 109 (-1.8%)
Mutual labels:  sdk
Botframework Emulator
A desktop application that allows users to locally test and debug chat bots built with the Bot Framework SDK.
Stars: ✭ 1,532 (+1280.18%)
Mutual labels:  sdk
Ali Oss
Aliyun OSS(open storage service) JavaScript SDK for the browser and Node.js
Stars: ✭ 1,579 (+1322.52%)
Mutual labels:  sdk
Iot Sdk C
device sdk for baidu IoT Core service, in c. Including MQTT client
Stars: ✭ 108 (-2.7%)
Mutual labels:  sdk
Pylinkvalidator
pylinkvalidator is a standalone and pure python link validator and crawler that traverses a web site and reports errors (e.g., 500 and 404 errors) encountered.
Stars: ✭ 109 (-1.8%)
Mutual labels:  networking
Jd Union Sdk
京东联盟SDK,支持swoole和fpm两种模式
Stars: ✭ 108 (-2.7%)
Mutual labels:  sdk
Ws Machine
WS-Machine is a websocket finite state machine for client websocket connections (Go)
Stars: ✭ 110 (-0.9%)
Mutual labels:  networking
Alamofire
Elegant HTTP Networking in Swift
Stars: ✭ 36,896 (+33139.64%)
Mutual labels:  networking
Open62541
Open source implementation of OPC UA (OPC Unified Architecture) aka IEC 62541 licensed under Mozilla Public License v2.0
Stars: ✭ 1,643 (+1380.18%)
Mutual labels:  sdk
Colyseus Examples
Colyseus Game Server examples for learning purposes
Stars: ✭ 109 (-1.8%)
Mutual labels:  networking
Easyhttpcpp
A cross-platform HTTP client library with a focus on usability and speed
Stars: ✭ 110 (-0.9%)
Mutual labels:  networking

网络请求

内部使用网络处理类,更加高效,更加面向对象的网络处理。请求、上传、下载、断点续传等。

Requirements 要求

  • iOS 8+
  • Xcode 8+

Installation 安装

1.手动安装:

下载DEMO后,将子文件夹WWNetworkHelper拖入到项目中, 导入头文件WWNetworkHelper.h开始使用 注意: 项目中需要有AFN3.x , YYCache第三方库! 在工程中链接sqlite3依赖库

2.CocoaPods安装:

first `pod 'WWNetworkHelper'

then pod install或pod install --no-repo-update

如果发现pod search WWNetworkHelper 不是最新版本,在终端执行pod setup命令更新本地spec镜像缓存

1. 无自动缓存(GET与POST请求用法相同)

1.1 无缓存

[WWNetworkHelper GET:url parameters:nil success:^(id responseObject) {
        //请求成功
    } failure:^(NSError *error) {
        //请求失败
}];

1.2 无缓存,手动缓存

[WWNetworkHelper GET:url parameters:nil success:^(id responseObject) {
    //请求成功
        //手动缓存
    [WWNetworkCache setHttpCache:responseObject URL:url parameters:parameters];
    } failure:^(NSError *error) {
    //请求失败
}];

2. 自动缓存(GET与POST请求用法相同)

[WWNetworkHelper GET:url parameters:nil responseCache:^(id responseCache) {
        //加载缓存数据
    } success:^(id responseObject) {
        //请求成功
    } failure:^(NSError *error) {
        //请求失败
}];

3.单/多图片上传

[WWNetworkHelper uploadImagesWithURL:url
                    	parameters:@{@"参数":@"参数"}
                        	images:@[@"UIImage数组"]
                          name:@"文件对应服务器上的字段"
                      fileNames:@"文件名称数组"
                      imageType:@"图片的类型,png,jpeg" 
                      imageScale:@"图片文件压缩比 范围 (0.f ~ 1.f)"
                      progress:^(NSProgress *progress) {
                          //上传进度
                          NSLog(@"上传进度:%.2f%%",100.0 * progress.completedUnitCount/progress.totalUnitCount);
                      } success:^(id responseObject) {
                         //上传成功
                      } failure:^(NSError *error) {
                        //上传失败
}];

4.文件上传

[WWNetworkHelper uploadFileWithURL:url
                    parameters:@{@"参数":@"参数"}
                          name:@"文件对应服务器上的字段"
                      filePath:@"文件本地的沙盒路径"
                      progress:^(NSProgress *progress) {
                          //上传进度
                          NSLog(@"上传进度:%.2f%%",100.0 * progress.completedUnitCount/progress.totalUnitCount);
                      } success:^(id responseObject) {
                         //上传成功
                      } failure:^(NSError *error) {
                        //上传失败
}];

5.文件下载

NSURLSessionTask *task = [WWNetworkHelper downloadWithURL:url fileDir:@"下载至沙盒中的制定文件夹(默认为Download)" progress:^(NSProgress *progress) {
        //下载进度,如果要配合UI进度条显示,必须在主线程更新UI
        NSLog(@"下载进度:%.2f%%",100.0 * progress.completedUnitCount/progress.totalUnitCount);
    } success:^(NSString *filePath) {
        //下载成功
    } failure:^(NSError *error) {
        //下载失败
}];
    
//暂停下载
[task suspend];
//开始下载
[task resume];
#pragma mark - 断点续传相关
/**
 *  下载文件
 *
 *  @param URL      请求地址
 *  @param fileDir  文件存储目录(默认存储目录为Download)
 *  @param progress 文件下载的进度信息
 *  @param success  下载成功的回调(回调参数filePath:文件的路径)
 *  @param failure  下载失败的回调
 *
 *  @return 断点续传:根据传入URL解析出的文件地址,根据已下载进度来下载未下载,取消使用cancelURL即可
 */
+ (NSURLSessionTask *)downFileBySuspendWithURL:(NSString *)URL
                                       fileDir:(NSString *)fileDir
                                      progress:(WWHttpProgress)progress
                                       success:(WWHttpRequestSuccess)success
                                       failure:(WWHttpRequestFailed)failure;

6.网络状态监测

// 1.实时获取网络状态,通过Block回调实时获取(此方法可多次调用)
[WWNetworkHelper networkStatusWithBlock:^(WWNetworkStatus status) {
   switch (status) {
       case WWNetworkStatusUnknown:          //未知网络
           break;
       case WWNetworkStatusNotReachable:    //无网络
           break;
       case WWNetworkStatusReachableViaWWAN://手机网络
           break;
       case WWNetworkStatusReachableViaWiFi://WIFI
           break;
   }
}];
    
// 2.一次性获取当前网络状态
if (kIsNetwork) {          
   NSLog(@"有网络");
   if (kIsWWANNetwork) {                    
       NSLog(@"手机网络");
   }else if (kIsWiFiNetwork){
       NSLog(@"WiFi网络");
   }
} else {
   NSLog(@"无网络");
}

7. 网络缓存

7.1 自动缓存的逻辑

1.从本地获取缓存(不管有无数据) --> 2.请求服务器数据 --> 3.更新本地数据

7.2 获取缓存总大小

NSInteger totalBytes = [WWNetworkCache getAllHttpCacheSize];
NSLog(@"网络缓存大小cache = %.2fMB",totalBytes/1024/1024.f);

7.3 删除所有缓存

[WWNetworkCache removeAllHttpCache];

8.网络参数设置(附说明)

#pragma mark - 重置AFHTTPSessionManager相关属性
/**
 *  设置网络请求参数的格式:默认为二进制格式
 *
 *  @param requestSerializer WWRequestSerializerJSON(JSON格式),WWRequestSerializerHTTP(二进制格式),
 */
+ (void)setRequestSerializer:(WWRequestSerializer)requestSerializer;

/**
 *  设置服务器响应数据格式:默认为JSON格式
 *
 *  @param responseSerializer WWResponseSerializerJSON(JSON格式),WWResponseSerializerHTTP(二进制格式)
 */
+ (void)setResponseSerializer:(WWResponseSerializer)responseSerializer;

/**
 *  设置请求超时时间:默认为30S
 *
 *  @param time 时长
 */
+ (void)setRequestTimeoutInterval:(NSTimeInterval)time;

/**
 *  设置请求头
 */
+ (void)setValue:(NSString *)value forHTTPHeaderField:(NSString *)field;

/**
 *  是否打开网络状态转圈菊花:默认打开
 *
 *  @param open YES(打开), NO(关闭)
 */
+ (void)openNetworkActivityIndicator:(BOOL)open;

/**
 配置自建证书的Https请求, 参考链接: http://blog.csdn.net/syg90178aw/article/details/52839103

 @param cerPath 自建Https证书的路径
 @param validatesDomainName 是否需要验证域名,默认为YES. 如果证书的域名与请求的域名不一致,需设置为NO; 即服务器使用其他可信任机构颁发
        的证书,也可以建立连接,这个非常危险, 建议打开.validatesDomainName=NO, 主要用于这种情况:客户端请求的是子域名, 而证书上的是另外
        一个域名。因为SSL证书上的域名是独立的,假如证书上注册的域名是www.google.com, 那么mail.google.com是无法验证通过的.
 */
+ (void)setSecurityPolicyWithCerPath:(NSString *)cerPath validatesDomainName:(BOOL)validatesDomainName;

更新日志

时间 版本 改动
2017.12.11 0.0.2 说明文件修改
2017.0731 0.0.2 说明文件修改
2017.0728 0.0.2 断点续传方法增阿基、说明文件修改
2017.07.28 0.01 初始化到CocoaPods

联系方式:

许可证

WWNetworkHelper 使用 MIT 许可证,详情见 LICENSE 文件。

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].