菜鸟二次投诉是怎么投诉,iOS菜鸟之AFN的二次封装

 2023-09-20 阅读 30 评论 0

摘要:我用一个单例类将一些常用的网络请求进行了二次封装,主要包括post请求 get请求 图片文件上传下载 视频的断点续传等功能。 首先大家先去github上下载AFN,将文件夹内的AFNetworking文件夹拖入工程中,然后创建一个图片文件参数类代码如下: #import

我用一个单例类将一些常用的网络请求进行了二次封装,主要包括post请求 get请求  图片文件上传下载  视频的断点续传等功能。

首先大家先去github上下载AFN,将文件夹内的AFNetworking文件夹拖入工程中,然后创建一个图片文件参数类代码如下:

#import <Foundation/Foundation.h>@interface UploadParam : NSObject
/***  上传文件的二进制数据*/
@property (nonatomic, strong) NSData *data;
/***  上传的参数名称*/
@property (nonatomic, copy) NSString *name;
/***  上传到服务器的文件名称*/
@property (nonatomic, copy) NSString *fileName;/***  上传文件的类型*/
@property (nonatomic, copy) NSString *mimeType;@end
#import "UploadParam.h"@implementation UploadParam@end

然后创建网络工具AFNManager具体代码如下(此处我提供了代理和block两种方式进行传值供大家选择):

#import <Foundation/Foundation.h>
#import "AFNManagerDelegate.h"
#import "UploadParam.h"
@interface AFNManager : NSObject@property (nonatomic, weak) id<AFNManagerDelegate> delegate;/***  AFNManager单利*/
+(AFNManager *)sharedManager;
#pragma mark --代理的方式传值
/***  get*/
- (void)GET:(NSString *)URLString parameters:(id)parameters;/***  post*/
- (void)Post:(NSString *)URLString parameters:(id)parameters;/***  upload*/
- (void)Upload:(NSString *)URLString parameters:(id)parameters uploadParam:(UploadParam *)uploadParam;#pragma mark --block的形式传值
/***  get请求*/
- (void)GET:(NSString *)URLString parameters:(id)parameters succeed:(void (^)(id data))succeed failure:(void (^)(NSError *error))failure;
/***  post请求*/
- (void)Post:(NSString *)URLString parameters:(id)parameters succeed:(void (^)(id data))succeed failure:(void (^)(NSError *error))failure;
/***  upload*/
- (void)Upload:(NSString *)URLString parameters:(id)parameters uploadParam:(UploadParam *)uploadParam succeed:(void (^)(id data))succeed failure:(void (^)(NSError *error))failure;#pragma mark --断点续传
/***  开始下载  断点续传**  @param URLString 请求接口*/
- (void)downloadStartWithUrl:(NSString *)URLString fileName:(NSString *)fileName;
/***  开始上传  断点续传**  @param URLString 请求接口*/
- (void)uploadStartWithUrl:(NSString *)URLString fileData:(NSData *)fileData;
/***  暂停操作  断点续传*/
- (void)operationPause;
/***  继续操作  断点续传*/
- (void)operationResume;
/***  取消操作*/
- (void)operationCancel;
@end
#import "AFNManager.h"
#import "AFNetworking.h"
@interface AFNManager()
{AFHTTPRequestOperation *operation; //创建请求管理(用于上传和下载)
}
@end
static AFNManager *manager = nil;
@implementation AFNManager
+(AFNManager *)sharedManager
{static dispatch_once_t onceToken;dispatch_once(&onceToken, ^{if (manager == nil) {manager = [[self alloc] init];}});return manager;
}+(instancetype)allocWithZone:(struct _NSZone *)zone
{static dispatch_once_t onceToken;dispatch_once(&onceToken, ^{if (manager == nil) {manager = [super allocWithZone:zone];}});return manager;
}
- (void)GET:(NSString *)URLString parameters:(id)parameters
{// 创建请求管理者AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];[mgr GET:URLString parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {if (self.delegate && [self.delegate respondsToSelector:@selector(AFNManagerDidSuccess:)]) {[self.delegate AFNManagerDidSuccess:responseObject];}} failure:^(AFHTTPRequestOperation *operation, NSError *error) {if (self.delegate && [self.delegate respondsToSelector:@selector(AFNManagerDidFaild:)]) {[self.delegate AFNManagerDidFaild:error];}}];
}- (void)Post:(NSString *)URLString parameters:(id)parameters
{// 创建请求管理者AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];[mgr POST:URLString parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {if (self.delegate && [self.delegate respondsToSelector:@selector(AFNManagerDidSuccess:)]) {[self.delegate AFNManagerDidSuccess:responseObject];}} failure:^(AFHTTPRequestOperation *operation, NSError *error) {if (self.delegate && [self.delegate respondsToSelector:@selector(AFNManagerDidFaild:)]) {[self.delegate AFNManagerDidFaild:error];}}];
}- (void)Upload:(NSString *)URLString parameters:(id)parameters uploadParam:(UploadParam *)uploadParam
{// 创建请求管理者AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];[mgr POST:URLString parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { // 上传的文件全部拼接到formData/***  FileData:要上传的文件的二进制数据*  name:上传参数名称*  fileName:上传到服务器的文件名称*  mimeType:文件类型*/[formData appendPartWithFileData:uploadParam.data name:uploadParam.name fileName:uploadParam.fileName mimeType:uploadParam.mimeType];} success:^(AFHTTPRequestOperation *operation, id responseObject) {if (self.delegate && [self.delegate respondsToSelector:@selector(AFNManagerDidSuccess:)]) {[self.delegate AFNManagerDidSuccess:responseObject];}} failure:^(AFHTTPRequestOperation *operation, NSError *error) {if (self.delegate && [self.delegate respondsToSelector:@selector(AFNManagerDidFaild:)]) {[self.delegate AFNManagerDidFaild:error];}}];}
-(void)GET:(NSString *)URLString parameters:(id)parameters succeed:(void (^)(id))succeed failure:(void (^)(NSError *))failure
{// 创建请求管理者AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];[mgr GET:URLString parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {if (responseObject == nil) {return ;}succeed(responseObject);} failure:^(AFHTTPRequestOperation *operation, NSError *error) {failure(error);}];
}
-(void)Post:(NSString *)URLString parameters:(id)parameters succeed:(void (^)(id))succeed failure:(void (^)(NSError *))failure
{// 创建请求管理者AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];[mgr POST:URLString parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {if (responseObject == nil) {return ;}succeed(responseObject);} failure:^(AFHTTPRequestOperation *operation, NSError *error) {failure(error);}];}
-(void)Upload:(NSString *)URLString parameters:(id)parameters uploadParam:(UploadParam *)uploadParam succeed:(void (^)(id))succeed failure:(void (^)(NSError *))failure
{// 创建请求管理者AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];[mgr POST:URLString parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { // 上传的文件全部拼接到formData/***  FileData:要上传的文件的二进制数据*  name:上传参数名称*  fileName:上传到服务器的文件名称*  mimeType:文件类型*/[formData appendPartWithFileData:uploadParam.data name:uploadParam.name fileName:uploadParam.fileName mimeType:uploadParam.mimeType];} success:^(AFHTTPRequestOperation *operation, id responseObject) {if (self.delegate && [self.delegate respondsToSelector:@selector(AFNManagerDidSuccess:)]) {succeed(responseObject);}} failure:^(AFHTTPRequestOperation *operation, NSError *error) {if (self.delegate && [self.delegate respondsToSelector:@selector(AFNManagerDidFaild:)]) {failure(error);}}];}
-(void)downloadStartWithUrl:(NSString *)URLString fileName:(NSString *)fileName
{NSString *filePath = [NSString stringWithFormat:@"%@/Documents/%@",NSHomeDirectory(), fileName];operation = [[AFHTTPRequestOperation alloc] initWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:URLString]]];operation.outputStream = [NSOutputStream outputStreamToFileAtPath:filePath append:NO];
//    可以在此设置进度条//    [operation setDownloadProgressBlock:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) {
//        
//    }];__weak typeof(self) weakself = self;[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {//        请求成功做出提示if (weakself.delegate && [weakself.delegate respondsToSelector:@selector(AFNManagerDidSuccess:)]) {[weakself.delegate AFNManagerDidSuccess:responseObject];}} failure:^(AFHTTPRequestOperation *operation, NSError *error) {//        请求失败做出提示if (weakself.delegate && [weakself.delegate respondsToSelector:@selector(AFNManagerDidFaild:)]) {[weakself.delegate AFNManagerDidFaild:error];}}];[operation start];
}
- (void)uploadStartWithUrl:(NSString *)URLString fileData:(NSData *)fileData
{operation = [[AFHTTPRequestOperation alloc] initWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:URLString]]];operation.inputStream = [[NSInputStream alloc] initWithData:fileData];//    设置进度条
//    [operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
//        
//    }];__weak typeof(self) weakself = self;[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {//        请求成功做出提示if (weakself.delegate && [weakself.delegate respondsToSelector:@selector(AFNManagerDidSuccess:)]) {[weakself.delegate AFNManagerDidSuccess:responseObject];}} failure:^(AFHTTPRequestOperation *operation, NSError *error) {//        请求失败做出提示if (weakself.delegate && [weakself.delegate respondsToSelector:@selector(AFNManagerDidFaild:)]) {[weakself.delegate AFNManagerDidFaild:error];}}];[operation start];
}
- (void)operationPause
{[operation pause];
}
- (void)operationResume
{[operation resume];
}
- (void)operationCancel
{[operation cancel];
}//网络监听(用于检测网络是否可以链接。此方法最好放于AppDelegate中,可以使程序打开便开始检测网络)
- (void)reachabilityManager
{AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];//打开网络监听
    [mgr.reachabilityManager startMonitoring];//监听网络变化[mgr.reachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {switch (status) {//当网络不可用(无网络或请求延时)case AFNetworkReachabilityStatusNotReachable:break;//当为手机WiFi时case AFNetworkReachabilityStatusReachableViaWiFi:break;//当为手机蜂窝数据网case AFNetworkReachabilityStatusReachableViaWWAN:break;//其它情况default:break;}}];//    //停止网络监听(若需要一直检测网络状态,可以不停止,使其一直运行)
//    [mgr.reachabilityManager stopMonitoring];
}@end

网络工具代理协议代码如下:

#import <Foundation/Foundation.h>
@class AFNManager;@protocol AFNManagerDelegate <NSObject>@optional
/***  发送请求成功**  @param manager AFNManager*/
-(void)AFNManagerDidSuccess:(id)data;
/***  发送请求失败**  @param manager AFNManager*/
-(void)AFNManagerDidFaild:(NSError *)error;
@end

菜鸟二次投诉是怎么投诉,有很多不足之处请大家多多指正,可以评论或点关注进行技术交流。后续也会写一些自己平时学习的点点滴滴。

转载于:https://www.cnblogs.com/sxwangjiadong/p/4970751.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/79972.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息