iOS AFN2.0请求封装使用
来源:互联网 发布:二次元背景拍照软件 编辑:程序博客网 时间:2024/04/30 09:24
//
// XMHttp.h
// podAFNetwork
//
// Created by mifit on 15/9/14.
// Copyright (c) 2015年 mifit. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "AFNetworking.h"
/** 常用json格式
NSArray *g = @[@"fds",@"fds",@"fds"];
NSDictionary *d = @{@"10":@"type"};
BOOL b = @YES;
NSNumber n = @1;
备注:参数不对返回错误;
*/
/**
@param operation 请求
@param responseObject 请求返回的数据
*/
typedef void (^successBlock)(AFHTTPRequestOperation *operation,id responseObject);
/**
@param operation 请求
@param error 请求错误信息
*/
typedef void (^failureBlock)(AFHTTPRequestOperation *operation,NSError *error);
@interface XMHttp : NSObject
#pragma mark - setting
/**
设置请求的格式,只对post,get有用
@param block 网络变化:AFNetworkReachabilityStatusReachableViaWWAN、AFNetworkReachabilityStatusReachableViaWiFi、AFNetworkReachabilityStatusNotReachable
*/
+ (void)http_rechablityChanged:(void(^)(AFNetworkReachabilityStatus status))block;
/**
设置请求的格式,只对post,get使用AFHTTPRequestOperationManager
@param rs 请求格式:AFHTTPRequestSerializer AFJSONRequestSerializer等
*/
+ (void)setRequestSerializer:(AFHTTPRequestSerializer *)rs;
/**
设置响应的格式,只对post,get使用AFHTTPRequestOperationManager
@param rs 响应格式:AFHTTPResponseSerializer AFImageResponseSerializer AFXMLParserResponseSerializer AFJSONResponseSerializer等
php->AFHTTPResponseSerializer html->GET
*/
+ (void)setResponseSerializer:(AFHTTPResponseSerializer *)rs;
#pragma mark - get or post
/**
发送GET、POST请求,使用AFHTTPRequestOperationManager
@param urlStr 请求url
@param params 请求参数
@param mtype 文件类型参数,POST请求时候,params有NSData数据需写,上传通道为对应NSData的key,具体值下面有
@param httpMethod 请求方法:GET POST
@param blockS 请求成功block
@param blockF 请求失败block
*/
+ (AFHTTPRequestOperation *)http_RequestWithURL:(NSString *) url
params:(NSDictionary *) params
httpMethod:(NSString *) httpMethod
mimeType:(NSString *) mtype
success:(successBlock) blockS
failure:(failureBlock) blockF;
/**
简单发送GET、POST发送请求
@param urlStr 请求url
@param params 请求参数
@param httpMethod 请求方法:GET POST
@param blockS 请求成功block
@param blockF 请求失败block
*/
+ (AFHTTPRequestOperation *)http_RequestWithURL:(NSString *) url
params:(NSDictionary *) params
httpMethod:(NSString *) httpMethod
success:(successBlock) blockS
failure:(failureBlock) blockF;
/**
发送GET、POST发送请求,可设置请求头
@param urlStr 请求url
@param header 请求头,可为nil。key:URL、Connection、"Content-Type"、Date、"Set-Cookie"、"Transfer-Encoding"
@param params 请求参数
@param httpMethod 请求方法:GET POST
@param blockS 请求成功block
@param blockF 请求失败block
*/
+ (AFHTTPRequestOperation *)http_RequestWithURL:(NSString *) url
requestHeader:(NSDictionary *) header
params:(NSDictionary *) params
httpMethod:(NSString *) httpMethod
success:(successBlock) blockS
failure:(failureBlock) blockF;
/**
发送Get请求,使用AFHTTPRequestOperationManager
@param urlStr 请求url
@param blockS 请求成功block
@param blockF 请求失败block
*/
+ (void)http_Get:(NSString *) urlStr
success:(successBlock) blockS
failure:(failureBlock) blockF;
/**
发送Get请求,使用AFHTTPRequestOperationManager
@param urlStr 请求url
@param params 请求参数
@param blockS 请求成功block
@param blockF 请求失败block
*/
+ (void)http_Get:(NSString *) urlStr
parameters:(NSDictionary *) params
success:(successBlock) blockS
failure:(failureBlock) blockF;
/**
发送Post请求,使用AFHTTPRequestOperationManager
@param urlStr 请求url
@param params 请求参数
@param blockS 请求成功block
@param blockF 请求失败block
*/
+ (void)http_Post:(NSString *) urlStr
parameters:(NSDictionary *) params
success:(successBlock) blockS
failure:(failureBlock) blockF;
/**
发送Post请求,body带二进制文件数据,可供用户上传图片之类,使用AFHTTPRequestOperationManager
@param urlStr 请求url
@param params 请求参数
@param path 文件路径
@param type 文件类型
@param blockS 请求成功block
@param blockF 请求失败block
*/
+ (void)http_Posts:(NSString *) urlStr
parameters:(NSDictionary *) params
filePath:(NSString *) path
fileType:(NSString *) type
success:(successBlock) blockS
failure:(failureBlock) blockF;
/**
发送Post请求,body带二进制文件数据,可供用户上传图片之类,使用AFHTTPRequestOperationManager
@param urlStr 请求url
@param params 请求参数
@param data 文件数据
@param type 文件类型
@param fileName 文件名字,必须带后缀,不能空
@param mimeType 文件mimeType:text/html(HTML文档)
application/xhtml+xml(XHTML文档)
image/gif(GIF图像)
image/jpeg(JPEG图像)【PHP中为:image/pjpeg】
image/png(PNG图像)【PHP中为:image/x-png】
video/mpeg(MPEG动画)
application/octet-stream(任意的二进制数据)
application/pdf(PDF文档)
application/msword(Microsoft Word文件)
message/rfc822(RFC 822形式)
multipart/alternative(HTML邮件的HTML形式和纯文本形式,相同内容使用不同形式表示)
application/x-www-form-urlencoded(使用HTTP的POST方法提交的表单)
multipart/form-data(同上,但主要用于表单提交时伴随文件上传的场合)
@param blockS 请求成功block
@param blockF 请求失败block
*/
+ (void)http_Posts:(NSString *) urlStr
parameters:(NSDictionary *) params
fileData:(NSData *) data
fileType:(NSString *) type
fileName:(NSString *) fileName
mimeType:(NSString *) mimeType
success:(successBlock) blockS
failure:(failureBlock) blockF;
#pragma mark - down or up load
/**
下载文件,没进度,缓存本地
@param urlStr 请求url
@param path 文件路径,不包含文件名;path为nil,文件下载到沙河的Document目录下
@param completionHandler 响应block。response:请求;responseObject:相应数据;error:错误信息
*/
+ (void)http_Down:(NSString *) urlStr
savePath:(NSString *) path
completedBlock:(void (^)(NSURLResponse *response,NSURL *filePath,NSError *error))completionHandler;
/**
下载文件,有进度,缓存本地
@param urlStr 请求url
@param path 文件完整路径;path为nil,文件下载到沙河的Document目录下
@param progress 进度回调百分比
@param blockS 请求成功block
@param blockF 请求失败block
*/
+ (void)http_Down:(NSString *) urlStr
savePath:(NSString *) path
progress:(void (^)(CGFloat progress))progress
success:(successBlock) blockS
failure:(failureBlock) blockF;
/**
下载文件,没进度,不缓存本地
@param urlImage 图片url
@param blockS 请求成功block,responseObject就是UIImage图片
@param blockF 请求失败block
*/
+ (void)http_DownImage:(NSString *) urlImage
success:(successBlock) blockS
failure:(failureBlock) blockF;
/**
下载文件,有进度,缓存本地
@param urlImage 图片url
@param blockS 请求成功block,responseObject就是UIImage图片
@param blockF 请求失败block
*/
+ (void)http_DownImage:(NSString *) urlImage
progress:(void (^)(CGFloat progress))progress
success:(successBlock) blockS
failure:(failureBlock) blockF;
/**
上传文件,没进度
@param urlStr 上传url
@param path 文件路径,包含文件名
@param completionHandler 响应block。response:请求;responseObject:相应数据;error:错误信息
*/
+ (void)http_Upload:(NSString *) url
path:(NSString *) path
completedBlock:(void (^)(NSURLResponse *response,id responseObject,NSError *error))completionHandler;
@end
//
// XMHttp.m
// podAFNetwork
//
// Created by mifit on 15/9/14.
// Copyright (c) 2015年 mifit. All rights reserved.
//
#import "XMHttp.h"
@implementation XMHttp
+ (void)http_rechablityChanged:(void(^)(AFNetworkReachabilityStatus status))block
{
NSURL *baseURL = [NSURLURLWithString:@"www.apple.com"];
AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManageralloc]initWithBaseURL:baseURL];
[manager.reachabilityManagersetReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
block(status);
}];
}
+ (void)setRequestSerializer:(AFHTTPRequestSerializer *)rs{
[XMHttp requestManager].requestSerializer = rs;
}
+ (void)setResponseSerializer:(AFHTTPResponseSerializer *)rs{
[XMHttp requestManager].responseSerializer = rs;
}
+ (AFHTTPRequestOperationManager *)requestManager
{
static dispatch_once_t onceToken;
staticAFHTTPRequestOperationManager *ma;
dispatch_once(&onceToken, ^{
ma = [AFHTTPRequestOperationManagermanager];
ma.responseSerializer = [AFJSONResponseSerializerserializer];
});
return ma;
}
+ (AFURLSessionManager *)sessionManager
{
static dispatch_once_t onceToken;
staticAFURLSessionManager *ma;
dispatch_once(&onceToken, ^{
NSURLSessionConfiguration *configuration = [NSURLSessionConfigurationdefaultSessionConfiguration];
ma = [[AFURLSessionManageralloc]initWithSessionConfiguration:configuration];
});
return ma;
}
#pragma mark - get
/// Get
+ (void)http_Get:(NSString *)urlStr
success:(successBlock)blockS
failure:(failureBlock)blockF
{
AFHTTPRequestOperationManager *manager = [XMHttprequestManager];
[manager GET:urlStr parameters:nil success:^(AFHTTPRequestOperation *operation,id responseObject) {
//NSLog(@"JSON: %@", responseObject);
blockS(operation,responseObject);
} failure:^(AFHTTPRequestOperation *operation,NSError *error) {
//NSLog(@"Error: %@", error);
blockF(operation,error);
}];
}
/// Get
+ (void)http_Get:(NSString *)urlStr
parameters:(NSDictionary *)params
success:(successBlock)blockS
failure:(failureBlock)blockF
{
AFHTTPRequestOperationManager *manager = [XMHttprequestManager];
[manager GET:urlStr parameters:params success:^(AFHTTPRequestOperation *operation,id responseObject) {
//NSLog(@"JSON: %@", responseObject);
blockS(operation,responseObject);
} failure:^(AFHTTPRequestOperation *operation,NSError *error) {
//NSLog(@"Error: %@", error);
blockF(operation,error);
}];
}
#pragma mark - post
+(AFHTTPRequestOperation *)http_RequestWithURL:(NSString *) url
params:(NSDictionary *) params
httpMethod:(NSString *) httpMethod
mimeType:(NSString *) mtype
success:(successBlock) blockS
failure:(failureBlock) blockF
{
//创建request请求管理对象
AFHTTPRequestOperationManager * manager = [selfrequestManager];
AFHTTPRequestOperation * operation =nil;
//GET请求
NSComparisonResult comparison1 = [httpMethodcaseInsensitiveCompare:@"GET"];
if (comparison1 == NSOrderedSame) {
operation =[manager GET:url parameters:params success:^(AFHTTPRequestOperation *operation,id responseObject) {
if (blockS != nil) {
blockS(responseObject,responseObject);
}
} failure:^(AFHTTPRequestOperation *operation,NSError *error) {
if (blockF != nil) {
blockF(operation,error);
}
}];
}
//POST请求
NSComparisonResult comparisonResult2 = [httpMethodcaseInsensitiveCompare:@"POST"];
if (comparisonResult2 == NSOrderedSame)
{
//标示
BOOL isFile = NO;
NSString *dataKey;
for (NSString * keyin params.allKeys)
{
id value = params[key];
//判断请求参数是否是文件数据
if ([value isKindOfClass:[NSData class]]) {
isFile = YES;
dataKey = key;
break;
}
}
if (!isFile) {
//参数中没有文件,则使用简单的post请求
operation = [manager POST:url
parameters:params
success:^(AFHTTPRequestOperation *operation,id responseObject) {
if (blockS !=nil) {
blockS(operation,responseObject);
}
} failure:^(AFHTTPRequestOperation *operation,NSError *error) {
if (blockF !=nil) {
blockF(operation,error);
}
}];
} else {
NSString *fileName = [NSStringstringWithFormat:@"uploadFile.%@",[mtypelastPathComponent]];
operation =[manager POST:url
parameters:params
constructingBodyWithBlock:^(id formData) {
[formData appendPartWithFileData:params[dataKey]
name:dataKey
fileName:fileName
mimeType:mtype];
} success:^(AFHTTPRequestOperation *operation,id responseObject) {
if (blockS != nil) {
blockS(operation,responseObject);
}
} failure:^(AFHTTPRequestOperation *operation,NSError *error) {
if (blockF != nil) {
blockF(operation,error);
}
}];
}
}
//设置返回数据的解析方式
operation.responseSerializer = [AFJSONResponseSerializerserializerWithReadingOptions:NSJSONReadingMutableContainers];
return operation;
}
+ (AFHTTPRequestOperation *)http_RequestWithURL:(NSString *) url
params:(NSDictionary *) params
httpMethod:(NSString *) httpMethod
success:(successBlock) blockS
failure:(failureBlock) blockF
{
NSMutableURLRequest *request = [NSMutableURLRequestrequestWithURL:[NSURLURLWithString:url]cachePolicy:NSURLRequestReloadIgnoringCacheDatatimeoutInterval:10];
//get请求
NSComparisonResult compResult1 =[httpMethodcaseInsensitiveCompare:@"GET"];
if (compResult1 == NSOrderedSame) {
[request setHTTPMethod:@"GET"];
if(params != nil)
{
//添加参数,将参数拼接在url后面
NSMutableString *paramsString = [NSMutableStringstring];
NSArray *allkeys = [params allKeys];
for (NSString *keyin allkeys) {
NSString *value = [params objectForKey:key];
[paramsString appendFormat:@"&%@=%@", key, value];
}
if (paramsString.length >0) {
[paramsString replaceCharactersInRange:NSMakeRange(0,1)withString:@"?"];
//重新设置url
[request setURL:[NSURLURLWithString:[urlstringByAppendingString:paramsString]]];
}
}
}
//post请求
NSComparisonResult compResult2 = [httpMethodcaseInsensitiveCompare:@"POST"];
if (compResult2 == NSOrderedSame) {
[request setHTTPMethod:@"POST"];
for (NSString *keyin params) {
NSString *v = params[key];
[request setHTTPBody:[vdataUsingEncoding:NSASCIIStringEncodingallowLossyConversion:YES]];
}
}
//发送请求
AFHTTPRequestOperation *requstOperation = [[AFHTTPRequestOperationalloc]initWithRequest:request];
//设置返回数据的解析方式(这里暂时只设置了json解析)
requstOperation.responseSerializer = [AFJSONResponseSerializerserializer];
[requstOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation,id responseObject) {
if (blockS != nil) {
blockS(operation,responseObject);
}
} failure:^(AFHTTPRequestOperation *operation,NSError *error) {
if (blockF != nil) {
blockF(operation,error);
}
}];
[requstOperation start];
return requstOperation;
}
/// url为请求地址,params是请求体,传字典进去,,httpMethod是请求方式,block是请求完成做得工作,header是请求头,也是传字典过去(发送请求获得json数据),如果没有则传nil,如果只有value而没有key,则key可以设置为anykey
+ (AFHTTPRequestOperation *)http_RequestWithURL:(NSString *) url
requestHeader:(NSDictionary *) header
params:(NSDictionary *) params
httpMethod:(NSString *) httpMethod
success:(successBlock) blockS
failure:(failureBlock) blockF
{
NSMutableURLRequest *request = [NSMutableURLRequestrequestWithURL:[NSURLURLWithString:url]cachePolicy:NSURLRequestReloadIgnoringCacheDatatimeoutInterval:10];
//添加请求头
for (NSString *keyin header.allKeys) {
[request addValue:header[key] forHTTPHeaderField:key];
}
//get请求
NSComparisonResult compResult1 =[httpMethodcaseInsensitiveCompare:@"GET"];
if (compResult1 == NSOrderedSame) {
[request setHTTPMethod:@"GET"];
if(params != nil)
{
//添加参数,将参数拼接在url后面
NSMutableString *paramsString = [NSMutableStringstring];
NSArray *allkeys = [params allKeys];
for (NSString *keyin allkeys) {
NSString *value = [params objectForKey:key];
[paramsString appendFormat:@"&%@=%@", key, value];
}
if (paramsString.length >0) {
[paramsString replaceCharactersInRange:NSMakeRange(0,1)withString:@"?"];
//重新设置url
[request setURL:[NSURLURLWithString:[urlstringByAppendingString:paramsString]]];
}
}
}
//post请求
NSComparisonResult compResult2 = [httpMethodcaseInsensitiveCompare:@"POST"];
if (compResult2 == NSOrderedSame) {
[request setHTTPMethod:@"POST"];
for (NSString *keyin params) {
[request setHTTPBody:[params[key]dataUsingEncoding:NSASCIIStringEncoding]];
}
}
//发送请求
AFHTTPRequestOperation *requstOperation = [[AFHTTPRequestOperationalloc]initWithRequest:request];
//设置返回数据的解析方式(这里暂时只设置了json解析)
requstOperation.responseSerializer = [AFJSONResponseSerializerserializer];
[requstOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation,id responseObject) {
if (blockS != nil) {
blockS(operation,responseObject);
}
} failure:^(AFHTTPRequestOperation *operation,NSError *error) {
if (blockF != nil) {
blockF(operation,error);
}
}];
[requstOperation start];
return requstOperation;
}
/// Post
+ (void)http_Post:(NSString *)urlStr
parameters:(NSDictionary *)params
success:(successBlock)blockS
failure:(failureBlock)blockF
{
AFHTTPRequestOperationManager *manager = [XMHttprequestManager];
[manager POST:urlStr parameters:params success:^(AFHTTPRequestOperation *operation,id responseObject) {
//NSLog(@"JSON: %@", responseObject);
blockS(operation,responseObject);
} failure:^(AFHTTPRequestOperation *operation,NSError *error) {
//NSLog(@"Error: %@", error);
blockF(operation,error);
}];
}
/// Posts 带body,可用于上传文件
+ (void)http_Posts:(NSString *)urlStr
parameters:(NSDictionary *)params
filePath:(NSString *)path
fileType:(NSString *)type
success:(successBlock)blockS
failure:(failureBlock)blockF
{
AFHTTPRequestOperationManager *manager = [XMHttprequestManager];
NSURL *filePath = [NSURLfileURLWithPath:path];
[manager POST:urlStrparameters:paramsconstructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
[formData appendPartWithFileURL:filePathname:typeerror:nil];
} success:^(AFHTTPRequestOperation *operation,id responseObject) {
//NSLog(@"Success: %@", responseObject);
blockS(operation,responseObject);
} failure:^(AFHTTPRequestOperation *operation,NSError *error) {
//NSLog(@"Error: %@", error);
blockF(operation,error);
}];
}
+ (void)http_Posts:(NSString *)urlStr
parameters:(NSDictionary *)params
fileData:(NSData *)data
fileType:(NSString *)type
fileName:(NSString *)fileName
mimeType:(NSString *)mimeType
success:(successBlock)blockS
failure:(failureBlock)blockF
{
AFHTTPRequestOperationManager *manager = [XMHttprequestManager];
[manager POST:urlStrparameters:paramsconstructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
[formData appendPartWithFileData:data name:type fileName:fileName mimeType:mimeType];
} success:^(AFHTTPRequestOperation *operation,id responseObject) {
//NSLog(@"Success: %@", responseObject);
blockS(operation,responseObject);
} failure:^(AFHTTPRequestOperation *operation,NSError *error) {
//NSLog(@"Error: %@", error);
blockF(operation,error);
}];
}
#pragma mark - down load
/// Down
+ (void)http_Down:(NSString *)urlStr
savePath:(NSString *)path
completedBlock:(void (^)(NSURLResponse *response,NSURL *filePath,NSError *error))completionHandler
{
AFURLSessionManager *manager = [XMHttpsessionManager];
NSURL *url = [NSURLURLWithString:urlStr];
NSURLRequest *request = [NSURLRequestrequestWithURL:url];
NSURLSessionDownloadTask *downloadTask = [managerdownloadTaskWithRequest:requestprogress:nildestination:^NSURL *(NSURL *targetPath,NSURLResponse *response) {
NSURL *documentsDirectoryURL;
if (path == nil) {
documentsDirectoryURL = [[NSFileManagerdefaultManager]URLForDirectory:NSDocumentDirectoryinDomain:NSUserDomainMaskappropriateForURL:nilcreate:NOerror:nil];
} else {
// URLWithString返回的是网络的URL,如果使用本地URL,需要注意
documentsDirectoryURL = [NSURL fileURLWithPath:path];
}
return [documentsDirectoryURL URLByAppendingPathComponent:[response suggestedFilename]];
} completionHandler:^(NSURLResponse *response,NSURL *filePath,NSError *error) {
//NSLog(@"File downloaded to: %@", filePath);
completionHandler(response,filePath,error);
}];
[downloadTask resume];
}
+ (void)http_Down:(NSString *)urlStr
savePath:(NSString *)path
progress:(void (^)(CGFloat progress))progress
success:(successBlock)blockS
failure:(failureBlock)blockF
{
NSURLRequest *request = [NSURLRequestrequestWithURL:[NSURLURLWithString:urlStr]];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperationalloc]initWithRequest:request];
operation.outputStream = [NSOutputStreamoutputStreamToFileAtPath:pathappend:YES];
[operation setDownloadProgressBlock:^(NSUInteger bytesRead,longlong totalBytesRead,longlong totalBytesExpectedToRead) {
float prog = ((float)totalBytesRead) / (totalBytesExpectedToRead);
progress(prog);
}]; //成功和失败回调
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation,id responseObject) {
blockS(operation,responseObject);
} failure:^(AFHTTPRequestOperation *operation,NSError *error) {
blockF(operation,error);
}];
[operation start];
}
+ (void)http_DownImage:(NSString *)urlImage
success:(successBlock)blockS
failure:(failureBlock)blockF
{
NSURLRequest *request = [NSURLRequestrequestWithURL:[NSURLURLWithString:urlImage]];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperationalloc]initWithRequest:request];
operation.responseSerializer = [AFImageResponseSerializerserializer];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation,id responseObject) {
blockS(operation,responseObject);
} failure:^(AFHTTPRequestOperation *operation,NSError *error) {
blockF(operation,error);
}];
[operation start];
}
+ (void)http_DownImage:(NSString *)urlImage
progress:(void (^)(CGFloat progress))progress
success:(successBlock)blockS
failure:(failureBlock)blockF
{
NSURLRequest *request = [NSURLRequestrequestWithURL:[NSURLURLWithString:urlImage]];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperationalloc]initWithRequest:request];
operation.responseSerializer = [AFImageResponseSerializerserializer];
[operation setDownloadProgressBlock:^(NSUInteger bytesRead,longlong totalBytesRead,longlong totalBytesExpectedToRead) {
CGFloat pro = totalBytesRead / (double)totalBytesExpectedToRead;
progress(pro);
}];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation,id responseObject) {
blockS(operation,responseObject);
} failure:^(AFHTTPRequestOperation *operation,NSError *error) {
blockF(operation,error);
}];
[operation start];
}
#pragma mark - up load
//-------------------------------------------------
/// Upload
+ (void)http_Upload:(NSString *)url
path:(NSString *)path
completedBlock:(void (^)(NSURLResponse *response,id responseObject,NSError *error))completionHandler
{
AFURLSessionManager *manager = [XMHttpsessionManager];
NSURL *URL = [NSURLURLWithString:url];
NSURLRequest *request = [NSURLRequestrequestWithURL:URL];
NSURL *filePath = [NSURLfileURLWithPath:path];
NSURLSessionUploadTask *uploadTask = [manageruploadTaskWithRequest:requestfromFile:filePath progress:nilcompletionHandler:^(NSURLResponse *response,id responseObject,NSError *error) {
completionHandler(response,responseObject,error);
}];
[uploadTask resume];
}
/// Upload with progress
+ (void)http_UploadProgress{}
#pragma mark - task
+ (void)http_Task
{
AFURLSessionManager *manager = [XMHttpsessionManager];
NSURL *URL = [NSURLURLWithString:@"http://example.com/upload"];
NSURLRequest *request = [NSURLRequestrequestWithURL:URL];
NSURLSessionDataTask *dataTask = [manager dataTaskWithRequest:request completionHandler:^(NSURLResponse *response,id responseObject,NSError *error) {
if (error) {
NSLog(@"Error: %@", error);
} else {
NSLog(@"%@ %@", response, responseObject);
}
}];
[dataTask resume];
}
@end
- iOS AFN2.0请求封装使用
- AFN2.0的使用
- IOS:SOAP(Webservice)请求基于AFN2.6之后
- AFN2
- AFN2.0上传进度条设置
- iOS封装网络请求
- 使用AFNetworking3.0封装网络请求
- iOS网络请求简单封装
- iOS 封装网络请求任务
- IOS 网络请求框架封装
- iOS 网络请求类封装
- iOS系统异步请求封装
- iOS 原生网络请求封装
- IOS 请求权限封装类
- LXNetwork - 基于AF3.0封装的iOS网络请求库
- React Native 网络请求封装:使用Promise封装fetch请求
- React Native 网络请求封装:使用Promise封装fetch请求
- React Native 网络请求封装:使用Promise封装fetch请求
- Nodejs异步流程控制Async
- Markdown简明教程
- POJ1107 W's Cipher 简单模拟
- 优化MyBatis配置文件中的配置
- php,c# hamsha1
- iOS AFN2.0请求封装使用
- Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
- 设计模式C++实现--策略模式
- linux下diff多个目录的脚本
- Method Swizzling
- 深入浅出REST
- 随机数、随机函数、大数随机及等概率探讨
- iOS AsyncSocket封装、长连接
- 我为什么选择Saltstack自动化管理服务器?