SWNetwork 1.2.1

SWNetwork 1.2.1

selwyn 维护。



SWNetwork 1.2.1

  • 作者:
  • selwyn

SWNetwork

CI Status Version License Platform

示例

要运行示例项目,请克隆仓库,然后首先从 Example 目录中运行 pod install

安装

SWNetwork 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中即可

pod 'SWNetwork', '~>1.1.9'

使用方法

SWRequest

创建数据任务

[[SWNetworkAgent request:^(SWRequest * _Nonnull request) {
    request.httpMethod = SWHTTPMethodGET;
    request.path = @"service/regeo";
    request.parameters = @{
                           @"longitude": @"119.04925573429551",
                           @"latitude": @"31.315590522490712"
                          };
}] startWithSuccess:^(SWRequest * _Nonnull request) {
    NSLog(@"request === %@", request.responseObject);
} failure:^(SWRequest * _Nonnull request) {
    NSLog(@"request === %@", request.error);
} completed:^(SWRequest * _Nonnull request) {
  
}];

创建下载任务

NSString *downloadDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
SWRequest *request = [SWRequest request];
request.downloadPath = downloadDir;
request.path = @"http://dldir1.qq.com/qqfile/QQforMac/QQ_V5.4.0.dmg";
request.progressBlock = ^(NSProgress * _Nonnull progress) {
    CGFloat stauts = 100.f * progress.completedUnitCount/progress.totalUnitCount;
    dispatch_async(dispatch_get_main_queue(), ^{
        NSLog(@"download test progress ==== %@", [NSString stringWithFormat:@"%.2f", stauts/100.f]);
    });
};
[request startWithSuccess:^(SWRequest * _Nonnull request) {
    NSLog(@"download test path === %@", request.responseObject);
} failure:^(SWRequest * _Nonnull request) {
  
} completed:^(SWRequest * _Nonnull request) {
  
}];

SWBatchRequest

[[SWNetworkAgent batchRequest:^(SWBatchRequest * _Nonnull request) {
    NSMutableArray *requests = [NSMutableArray array];
    
    SWRequest *tmpReq1 = [SWRequest request];
    tmpReq1.httpMethod = SWHTTPMethodGET;
    tmpReq1.path = @"service/regeo";
    tmpReq1.parameters = @{
        @"longitude": @"119.04925573429551",
        @"latitude": @"31.315590522490712"
    };
    tmpReq1.tag = 100;
    [requests addObject:tmpReq1];
    
    SWCustomRequest *tmpReq2 = [SWCustomRequest request];
    tmpReq2.tag = 200;
    [requests addObject:tmpReq2];
    
    request.requests = requests;
}] startWithSuccess:^(SWBatchRequest * _Nonnull request) {
//    for (SWRequest *req in request.requests) {
//        if (req.tag == 100) {
//            NSLog(@"tmpReq1 == %@", req.responseObject);
//        }
//        else {
//            NSLog(@"tmpReq2 == %@", req.responseObject);
//        }
//    }
    
		// Get request by index
    NSLog(@"tmpReq1 == %@", request.requests[0].responseObject);
    NSLog(@"tmpReq2 == %@", request.requests[1].responseObject);   
} failure:^(SWBatchRequest * _Nonnull request) {
    NSLog(@"tmpReq1 == %@", request.requests[0].error);
    NSLog(@"tmpReq2 == %@", request.requests[1].error);
} completed:^(SWBatchRequest * _Nonnull request) {
  
}];

SWChainRequest

[[SWNetworkAgent chainRequest:^(SWChainRequest * _Nonnull request) {
    SWRequest *tmpReq1 = [SWRequest request];
    tmpReq1.httpMethod = SWHTTPMethodGET;
    tmpReq1.path = @"service/regeo";
    tmpReq1.parameters = @{
        @"longitude": @"119.04925573429551",
        @"latitude": @"31.315590522490712"
    };
    tmpReq1.tag = 100;
  
    [request nextRequest:tmpReq1 block:^(SWRequest * _Nonnull currentRequest) {
        NSLog(@"tmpReq1 == %@", currentRequest.responseObject);
        SWCustomRequest *tmpReq2 = [SWCustomRequest request];
        tmpReq2.tag = 200;
      
        [request nextRequest:tmpReq2 block:^(SWRequest * _Nonnull currentRequest) { 
            NSLog(@"tmpReq2 == %@", currentRequest.responseObject);
        }];
    }]; 
}] startWithSuccess:^(SWChainRequest * _Nonnull request) {
    
} failure:^(SWChainRequest * _Nonnull request) {
    
} completed:^(SWChainRequest * _Nonnull request) {
  
}];

SWBatchChainRequest

[[SWNetworkAgent batchChainRequest:^(SWBatchChainRequest * _Nonnull request) {
    SWBatchRequest *batchReq1 = [SWBatchRequest request];
    NSMutableArray *requests = [NSMutableArray array];
    
    SWRequest *tmpReq1 = [SWRequest request];
    tmpReq1.httpMethod = SWHTTPMethodGET;
    tmpReq1.path = @"service/regeo";
    tmpReq1.parameters = @{
        @"longitude": @"119.04925573429551",
        @"latitude": @"31.315590522490712"
    };
    tmpReq1.tag = 100;
    [requests addObject:tmpReq1];
    
    SWCustomRequest *tmpReq2 = [SWCustomRequest request];
    tmpReq2.tag = 200;
    [requests addObject:tmpReq2];
    batchReq1.requests = requests;
    
    [request nextRequest:batchReq1 block:^(SWBatchRequest * _Nonnull currentRequest) {
        SWBatchRequest *batchReq2 = [SWBatchRequest request];
        NSMutableArray *requests = [NSMutableArray array];
        
        SWRequest *tmpReq1 = [SWRequest request];
        tmpReq1.httpMethod = SWHTTPMethodGET;
        tmpReq1.path = @"service/regeo";
        tmpReq1.parameters = @{
            @"longitude": @"119.04925573429551",
            @"latitude": @"31.315590522490712"
        };
        tmpReq1.tag = 100;
        [requests addObject:tmpReq1];
        
        SWCustomRequest *tmpReq2 = [SWCustomRequest request];
        tmpReq2.tag = 200;
        [requests addObject:tmpReq2];
        batchReq2.requests = requests;
        
        [request nextRequest:batchReq2 block:^(SWBatchRequest * _Nonnull currentRequest) {
            
        }];
    }];
    
}] startWithSuccess:^(SWBatchChainRequest * _Nonnull request) {
    
} failure:^(SWBatchChainRequest * _Nonnull request) {
    
} completed:^(SWBatchChainRequest * _Nonnull request) {

}];

安全策略

将固定SSL证书添加到您的应用中可以帮助防止中间人攻击和其他漏洞。

允许无效SSL证书

SWNetworkConfiguration *config = [SWNetworkConfiguration sharedConfiguration];

AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
securityPolicy.allowInvalidCertificates = YES;
securityPolicy.validatesDomainName = NO;
config.securityPolicy = securityPolicy;

SWNetworkManager

监控WWAN和WiFi网络接口的域和地址的可达性。

共享网络可达性

[SWNetworkManager networkStatusWithBlock:^(SWNetworkReachabilityStatus status) {
    NSLog(@"Network Status Changed");
}];

作者

selwyn, [email protected]

许可证

SWNetwork可在MIT许可证下使用。有关更多信息,请参阅LICENSE文件。