用到AFN框架和DACircularProgress框架
#import "NetRequestTool.h"
@implementation NetRequestTool
/**
* 网络请求 value,header默认为Bearer,Authorization
*
* @param paramDict 参数
* @param image 需要上传的图片
* @param name 上传图片的字段
* @param token token
* @param value Header值,填nil默认为Bearer
* @param header headerField,填nil默认为Authorization
* @param url API
* @param type 类型
* @param successBlock 成功操作
* @param errorBlock 失败操作
*/
+ (void)requestWithParamsDict:(NSDictionary*)paramDict image:(UIImage*)image name:(NSString*)name token:(NSString*)token value:(NSString*)value hearerField:(NSString*)header URL:(NSString*)url type:(netRequestType)type successBlock:(successBlock)successBlock anderrorBlock:(errorBlock)errorBlock
{
AFHTTPRequestOperationManager* mgr = [AFHTTPRequestOperationManager manager];
if (![token isEqualToString:@""]) {
value = @"Bearer";
header = @"Authorization";
[mgr.requestSerializer setValue:[NSString stringWithFormat:@"%@ %@", value, token] forHTTPHeaderField:header];
}
if (type == GET) {
[mgr GET:url parameters:paramDict success:^(AFHTTPRequestOperation* _Nonnull operation, id _Nonnull responseObject) {
if (successBlock) {
successBlock(operation, responseObject);
}
}
failure:^(AFHTTPRequestOperation* _Nonnull operation, NSError* _Nonnull error) {
if (errorBlock) {
errorBlock(operation, error);
}
}];
}
if (type == POST) {
[mgr POST:url parameters:paramDict success:^(AFHTTPRequestOperation* _Nonnull operation, id _Nonnull responseObject) {
if (successBlock) {
successBlock(operation, responseObject);
}
}
failure:^(AFHTTPRequestOperation* _Nonnull operation, NSError* _Nonnull error) {
if (errorBlock) {
errorBlock(operation, error);
}
}];
}
if (type == PUT) {
[mgr PUT:url parameters:paramDict success:^(AFHTTPRequestOperation* _Nonnull operation, id _Nonnull responseObject) {
if (successBlock) {
successBlock(operation, responseObject);
}
}
failure:^(AFHTTPRequestOperation* _Nonnull operation, NSError* _Nonnull error) {
if (errorBlock) {
errorBlock(operation, error);
}
}];
}
if (type == UPLOADIMAGE) {
AFHTTPRequestOperation* uploadOperation = [mgr POST:url parameters:paramDict constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
NSData* imageData = UIImageJPEGRepresentation(image, 0.4);
NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyyMMddHHmmss";
NSString* str = [formatter stringFromDate:[NSDate date]];
NSString* fileName = [NSString stringWithFormat:@"%@.jpeg", str];
[formData appendPartWithFileData:imageData name:name fileName:fileName mimeType:@"image/jpeg"];
}
success:^(AFHTTPRequestOperation* _Nonnull operation, id _Nonnull responseObject) {
if (successBlock) {
successBlock(operation, responseObject);
}
}
failure:^(AFHTTPRequestOperation* _Nonnull operation, NSError* _Nonnull error) {
if (errorBlock) {
errorBlock(operation, error);
}
}];
[uploadOperation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
CGFloat progress = ((float)totalBytesWritten) / totalBytesExpectedToWrite;
[self sharedTool].progressView.progress = progress;
[self sharedTool].progressView.progressLabel.text = [NSString stringWithFormat:@"%.2f%%", progress * 100];
}];
}
}
+ (NetRequestTool*)sharedTool
{
static NetRequestTool* tool;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
tool = [[NetRequestTool alloc] init];
});
return tool;
}
@end