AFN笔记

- (void)download

{

// 1.创建AFN管理者

AFHTTPSessionManager*manager = [AFHTTPSessionManagermanager];

// 2.利用AFN下载文件

NSURLRequest*request = [NSURLRequestrequestWithURL:[NSURLURLWithString:@"http://120.25.226.186:32812/resources/images/minion_02.png"]];

NSURLSessionDownloadTask*task = [managerdownloadTaskWithRequest:requestprogress:nildestination:^NSURL*(NSURL*targetPath,NSURLResponse*response) {

//请求完成的回调

// targetPath :下载好的文件的路径

// response:响应头

// block的返回值:告诉AFN框架,是否需要将下载好的文件移动到其它路径下

NSLog(@"targetPath = %@", targetPath);

NSString*path = [response.suggestedFilenamecacheDir];

NSURL*destURL = [NSURLfileURLWithPath:path];

NSLog(@"destURL = %@", destURL);

returndestURL;

}completionHandler:^(NSURLResponse*response,NSURL*filePath,NSError*error) {

//下载完成的回调

// filePath :移动之后的文件路径

NSLog(@"filePath = %@", filePath);

}];

[task   resume];

}


- (void)download2

{

// 1.创建AFN管理者

AFHTTPSessionManager*manager = [AFHTTPSessionManagermanager];

//创建NSProgress

/*

@property int64_t totalUnitCount;需要下载文件的总大小

@property int64_t completedUnitCount;已经下载文件的总大小

*/

NSProgress*progress =nil;

self.progress= progress;

// 2.利用AFN下载文件

NSURLRequest*request = [NSURLRequestrequestWithURL:[NSURLURLWithString:@"http://120.25.226.186:32812/resources/videos/minion_02.mp4"]];

//只要将NSProgress对象传递给AFN, AFN就会在内部自动给NSProgress赋值\会自动修改NSProgress的下载进度

NSURLSessionDownloadTask*task = [managerdownloadTaskWithRequest:requestprogress:&progressdestination:^NSURL*(NSURL*targetPath,NSURLResponse*response) {

//请求完成的回调

NSString*path = [response.suggestedFilenamecacheDir];

NSURL*destURL = [NSURLfileURLWithPath:path];

returndestURL;

}completionHandler:^(NSURLResponse*response,NSURL*filePath,NSError*error) {

//下载完成的回调

// filePath :移动之后的文件路径

NSLog(@"filePath = %@", filePath);

}];

//给NSProgress注册监听,监听它的completedUnitCount属性的改变

[progressaddObserver:selfforKeyPath:@"completedUnitCount"options:NSKeyValueObservingOptionNewcontext:nil];

//注意:必须手动执行才会开始下载

[task  resume];

//NSLog(@"%@", progress);

}

- (void)dealloc

{

[selfremoveObserver:self.progressforKeyPath:@"completedUnitCount"];

}


- (void)upload

{

// 1.创建AFN管理者

AFHTTPSessionManager*manager = [AFHTTPSessionManagermanager];

// 2.利用AFN上传文件

NSDictionary*dict =@{

@"username":@"lnj"

};

[managerPOST:@"http://120.25.226.186:32812/upload"parameters:dictconstructingBodyWithBlock:^(id formData) {

//在这个block中上传文件数据

// formData就是专门用于保存需要上传文件的二进制数据的

NSData*data = [NSDatadataWithContentsOfFile:@"/Users/xiaomage/Desktop/Snip20150824_1.png"];

//注意:该方法不能用于POST上传

//[formData appendPartWithFormData:data name:@"file"];

/*

第一个参数:需要上传的文件二进制

第二个参数:服务器对应的参数名称

第三个参数:文件的名称

第四个参数:文件的MIME类型

*/

//[formData appendPartWithFileData:data name:@"file" fileName:@"abc.png" mimeType:@"image/png"];

/*

第一个参数:需要上传的文件的URL

第二个参数:服务器对应的参数名称

第三个参数:文件的名称

第四个参数:文件的MIME类型

*/

NSURL*url = [NSURLfileURLWithPath:@"/Users/yedayi/Desktop/1.png"];

//[formData appendPartWithFileURL:url name:@"file" fileName:@"def.png" mimeType:@"image/png" error:nil];

//如果使用以下方法上传文件, AFN会自动获取文件的名称和类型

[formDataappendPartWithFileURL:urlname:@"file"error:nil];

}success:^(NSURLSessionDataTask*task,idresponseObject) {

NSLog(@"成功的回调%@", responseObject);

}failure:^(NSURLSessionDataTask*task,NSError*error) {

NSLog(@"失败的回调");

}];

NSLog(@"---------------");

}


- (void)serializer

{

// 1.创建AFN管理者

AFHTTPSessionManager*manager = [AFHTTPSessionManagermanager];

//如果服务器返回的不是JSON数据,那么需要提前告诉AFN如何处理处理数据

//只要给AFN的responseSerializer属性,赋值为AFXMLParserResponseSerializer,以后AFN就会将服务器返回的数据当做XML来处理

//manager.responseSerializer = [AFXMLParserResponseSerializer serializer];

//只要给AFN的responseSerializer属性,赋值为AFHTTPResponseSerializer,以后AFN就会将服务器返回的数据当做二进制来处理,也就是说不做任何处理

manager.responseSerializer= [AFHTTPResponseSerializerserializer];

// 2.利用AFN发送请求

NSDictionary*dict =@{

@"username":@"520it",

@"pwd":@"520it",

@"type":@"XML",

};

[managerPOST:@"http://120.25.226.186:32812/resources/images/minion_02.png"parameters:nilsuccess:^(NSURLSessionDataTask*task,idresponseObject) {

//注意: AFN默认会将服务器返回的数据当做JSON处理

//如果服务器返回的是JSON数据,那么会自动转换为OC对象

NSLog(@"%@", responseObject);

//只要设置AFN的responseSerializer为XML,那么返回的responseObject就是NSXMLParser解析器

}failure:^(NSURLSessionDataTask*task,NSError*error) {

NSLog(@"error");

}];

}



- (void)afnReachability

{

// 1.创建网络监听管理者

AFNetworkReachabilityManager*manager = [AFNetworkReachabilityManagersharedManager];

// 2.设置网络变化的回调

[managersetReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatusstatus) {

//只要用户的网络发生改变,就会调用这个block

/*

AFNetworkReachabilityStatusUnknown=不能识别,

AFNetworkReachabilityStatusNotReachable=没有网络,

AFNetworkReachabilityStatusReachableViaWWAN =蜂窝网,

AFNetworkReachabilityStatusReachableViaWiFi =局域网,

*/

switch(status) {

caseAFNetworkReachabilityStatusReachableViaWWAN:

NSLog(@"蜂窝网");

break;

caseAFNetworkReachabilityStatusReachableViaWiFi:

NSLog(@"局域网");

break;

caseAFNetworkReachabilityStatusNotReachable:

NSLog(@"没有网络");

break;

default:

NSLog(@"不能识别");

break;

}

}];

// 3.开始监听

[managerstartMonitoring];

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容