标签:
- (void)get{
AFHTTPRequestOperationManager*manager = [AFHTTPRequestOperationManager manager];
/*
第一个参数:需要请求的URL地址字符串
第二个参数:请求时需要传递的参数
第三个参数:请求成功的回调
第四个参数:请求失败的回调
*/
//注意:字典参数中不需要写? AFN会自动添加
NSDictionary*dict = @{@"username":@"Mitchell",
@"pwd":@"123456"};
[manager GET:@"" parameters:dict success:^(AFHTTPRequestOperation *operation, id responseObject) {
//responseObject 服务器返回数据
//注意点:如果服务器返回JSON,AFN会自动转换位OC对象
} failure:^(AFHTTPRequestOperation * operation, NSError * error) {
NSLog(@"%@",error);
}];
}
NSDictionary*dict = @{@"username":@"Mitchell",
@"pwd":@"123456"};
AFHTTPSessionManager*manager = [AFHTTPSessionManager manager];
[manager GET:@"" parameters:dict success:^(NSURLSessionDataTask * task, id responseObject) {
} failure:^(NSURLSessionDataTask * task, NSError * error) {
}];
AFHTTPRequestOperationManager*manager = [AFHTTPRequestOperationManager manager];
NSDictionary*dict = @{@"username":@"Mitchell",
@"pwd":@"123456"};
[manager POST:@"" parameters:dict success:^(AFHTTPRequestOperation *operation, id responseObject) {
//responseObject 服务器返回数据
//注意点:如果服务器返回JSON,AFN会自动转换位OC对象
} failure:^(AFHTTPRequestOperation * operation, NSError * error) {
NSLog(@"%@",error);
}];
NSDictionary*dict = @{@"username":@"Mitchell",
@"pwd":@"123456"};
AFHTTPSessionManager*manager = [AFHTTPSessionManager manager];
[manager POST:@"" parameters:dict success:^(NSURLSessionDataTask * task, id responseObject) {
} failure:^(NSURLSessionDataTask * task, NSError * error) {
}];
//图片:http://img1.imgtn.bdimg.com/it/u=298400068,822827541&fm=21&gp=0.jpg%2F2008-09-08%2F200898163242920_2.jpg&bdtype=0&fr=ala&ala=1&alatpl=others&pos=1
//MP4:http://mvvideo1.meitudata.com/55d99e5939342913.mp4
//1、创建AFHTTPSessionManager
AFHTTPSessionManager*manager = [AFHTTPSessionManager manager];
//创建NSProgress
NSProgress*progress = [[NSProgress alloc]init];;
self.progress = progress;
// progress.completedUnitCount;
// progress.totalUnitCount;
//2、利用AFN下载文件
NSURLRequest*request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://mvvideo1.meitudata.com/55d99e5939342913.mp4"]];
//只要将NSProgress对象传递给AFN,AFN就会在内部自动给NSProgress赋值、会自动修改NSProgress的下载进度。
NSURLSessionDownloadTask * task = [manager downloadTaskWithRequest:request progress:&progress destination:^ NSURL * (NSURL * targerUrl, NSURLResponse * response) {
NSLog(@"请求完成 ");
//请求完成的回调
//targetPath:下载好的文件的路径
//response:响应头
//block的返回值:告诉AFN框架,是否需要将下载好的文件移动到其他路径下
NSString*path = [response.suggestedFilename cacheDir];
NSURL*destUrl = [NSURL fileURLWithPath:path];
return destUrl;
} completionHandler:^(NSURLResponse * response, NSURL * filePath, NSError * error) {
NSLog(@"下载完成");
//下载完成的回调
//filePath:移动之后的文件路径
NSLog(@"filePath = %@",filePath);
}];
//给NSProgress注册监听,监听progress.completedUnitCount属性的改变
[progress addObserver:self forKeyPath:@"completedUnitCount" options:NSKeyValueObservingOptionNew context:nil];
//3、开启任务
//注意:必须手动执行才会开始下载
[task resume];
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
if ([object isKindOfClass:[NSProgress class]]) {
NSProgress*progress = (NSProgress*)object; NSLog(@"%f",1.0*progress.completedUnitCount/progress.totalUnitCount);
}
}
//1、创建AFN管理者
AFHTTPSessionManager*manager = [AFHTTPSessionManager manager];
//2、利用AFN上传文件
NSDictionary*dic =@{@"username":@"username",@"pwd":@"123456"};
[manager POST:@"address" parameters:dic constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
//在这个block 中上传文件数据
//formData就是专门用于保存需要上传文件的二进制数据的
NSData*data = [NSData dataWithContentsOfFile:@""];
//注意:该方法不能用于POST上传
// [formData appendPartWithFormData:data name:@"file"];
/*
第一个参数:需要上传的文件二进制
第二个参数:服务器对应的参数名称
第三个参数:文件的文件
第四个参数:文件的MIME类型
*/
[formData appendPartWithFileData:data name:@"file" fileName:@"abc.png" mimeType:@"image/png"];
/*
第一个参数:需要上传的文件的URL
第二个参数:服务器对应的参数名称
第三个参数:文件的文件
第四个参数:文件的MIME类型
*/
NSURL*url = [NSURL URLWithString:@"aaa"];
// [formData appendPartWithFileURL:url name:@"file" fileName:@"abc.png" mimeType:@"image/png" error:nil];
//如果使用此方法上传文件,AFN会自动获取文件的名称和类型
[formData appendPartWithFileURL:url name:@"file" error:nil];
} success:^(NSURLSessionDataTask * task, id responseObject) {
NSLog(@"成功的回调");
} failure:^(NSURLSessionDataTask * task, NSError * error) {
NSLog(@"失败的回调");
}];
NSDictionary*dict = @{@"username":@"Mitchell",
@"pwd":@"123456"};
AFHTTPSessionManager*manager = [AFHTTPSessionManager manager];
//如果服务器返回的不是JSON数据,那么需要提iAFN如何处理数据
//只要给AFN的responseSerializer属性赋值位AFXMLParserResponseSerializer,以后AFN就会将服务器的数据设为XML。
// manager.responseSerializer = [AFXMLParserResponseSerializer serializer];
//只要给AFN的responseSerializer属性赋值位AFHTTPResponseSerializer,以后AFN就会将服务器的数据设为二进制。
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
[manager POST:@"" parameters:dict success:^(NSURLSessionDataTask * task, id responseObject) {
//注意:AFN默认会将服务器返回的数据当做JSON处理
//如果服务器返回的是JSON数据,那么会自动转换为OC对象
NSLog(@"%@",[responseObject class]);
} failure:^(NSURLSessionDataTask * task, NSError * error) {
}];
- (void)afNetWorkReachAbility{
AFNetworkReachabilityManager*manager = [AFNetworkReachabilityManager sharedManager];
[manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
/*
typedef NS_ENUM(NSInteger, AFNetworkReachabilityStatus) {
AFNetworkReachabilityStatusUnknown = -1,不能识别
AFNetworkReachabilityStatusNotReachable = 0,没有网
AFNetworkReachabilityStatusReachableViaWWAN = 1,蜂窝网
AFNetworkReachabilityStatusReachableViaWiFi = 2,局域网
};
*/
switch (status) {
case AFNetworkReachabilityStatusUnknown:
NSLog(@"不能识别");
break;
case AFNetworkReachabilityStatusNotReachable:
NSLog(@"没有网");
break;
case AFNetworkReachabilityStatusReachableViaWWAN:
NSLog(@"蜂窝网");
break;
case AFNetworkReachabilityStatusReachableViaWiFi:
NSLog(@"wifi");
break;
}
}];
}
可选类型说明
#pragma mark ------------------ 可选类型说明 ------------------
- (void)detail{
/*
nullable:代表可以为nil
__nonnull:代表不能为nil
*/
/*
AFHTTPSessionManager*manager = [AFHTTPSessionManager manager];
[manager GET:@"www.baidu.com" parameters:nil success:^nullable void(NSURLSessionDataTask * __nonnull, id __nonnull) {
} failure:^nullable void(NSURLSessionDataTask * __nonnull, NSError * __nonnull) {
}];
*/
}
标签:
原文地址:http://www.cnblogs.com/W-Kr/p/5462441.html