AFNetworking2.5使用-转
来自:http://blog.csdn.net/daiyelang/article/details/38434023
官网下载2.5版本:http://afnetworking.com/
此文章是基于AFNetworking2.5版本的,需要看AFNetworking2.0版本的请看上一篇文章:AFNetworking2.0使用
1.检测网络状态
- + (void)netWorkStatus
- {
- /**
- AFNetworkReachabilityStatusUnknown = -1, // 未知
- AFNetworkReachabilityStatusNotReachable = 0, // 无连接
- AFNetworkReachabilityStatusReachableViaWWAN = 1, // 3G 花钱
- AFNetworkReachabilityStatusReachableViaWiFi = 2, // WiFi
- */
- // 如果要检测网络状态的变化,必须用检测管理器的单例的startMonitoring
- [[AFNetworkReachabilityManager sharedManager] startMonitoring];
- // 检测网络连接的单例,网络变化时的回调方法
- [[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
- NSLog(@"%ld", status);
- }];
- }
2.JSON方式获取数据
- + (void)JSONDataWithUrl:(NSString *)url success:(void (^)(id json))success fail:(void (^)())fail;
- {
- AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
- NSDictionary *dict = @{@"format": @"json"};
- // 网络访问是异步的,回调是主线程的,因此程序员不用管在主线程更新UI的事情
- [manager GET:url parameters:dict success:^(AFHTTPRequestOperation *operation, id responseObject) {
- if (success) {
- success(responseObject);
- }
- } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
- NSLog(@"%@", error);
- if (fail) {
- fail();
- }
- }];
- }
3.xml方式获取数据
- + (void)XMLDataWithUrl:(NSString *)urlStr success:(void (^)(id xml))success fail:(void (^)())fail
- {
- AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
- // 返回的数据格式是XML
- manager.responseSerializer = [AFXMLParserResponseSerializer serializer];
- NSDictionary *dict = @{@"format": @"xml"};
- // 网络访问是异步的,回调是主线程的,因此程序员不用管在主线程更新UI的事情
- [manager GET:urlStr parameters:dict success:^(AFHTTPRequestOperation *operation, id responseObject) {
- if (success) {
- success(responseObject);
- }
- } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
- NSLog(@"%@", error);
- if (fail) {
- fail();
- }
- }];
- }
4.post提交json数据
- + (void)postJSONWithUrl:(NSString *)urlStr parameters:(id)parameters success:(void (^)(id responseObject))success fail:(void (^)())fail
- {
- AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
- // 设置请求格式
- manager.requestSerializer = [AFJSONRequestSerializer serializer];
- // 设置返回格式
- manager.responseSerializer = [AFHTTPResponseSerializer serializer];
- [manager POST:urlStr parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
- // NSString *result = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
- if (success) {
- success(responseObject);
- }
- } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
- NSLog(@"%@", error);
- if (fail) {
- fail();
- }
- }];
- }
5.下载文件
- + (void)sessionDownloadWithUrl:(NSString *)urlStr success:(void (^)(NSURL *fileURL))success fail:(void (^)())fail
- {
- NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
- AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:config];
- NSString *urlString = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
- NSURL *url = [NSURL URLWithString:urlString];
- NSURLRequest *request = [NSURLRequest requestWithURL:url];
- NSURLSessionDownloadTask *task = [manager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
- // 指定下载文件保存的路径
- // NSLog(@"%@ %@", targetPath, response.suggestedFilename);
- // 将下载文件保存在缓存路径中
- NSString *cacheDir = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0];
- NSString *path = [cacheDir stringByAppendingPathComponent:response.suggestedFilename];
- // URLWithString返回的是网络的URL,如果使用本地URL,需要注意
- // NSURL *fileURL1 = [NSURL URLWithString:path];
- NSURL *fileURL = [NSURL fileURLWithPath:path];
- // NSLog(@"== %@ |||| %@", fileURL1, fileURL);
- if (success) {
- success(fileURL);
- }
- return fileURL;
- } completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
- NSLog(@"%@ %@", filePath, error);
- if (fail) {
- fail();
- }
- }];
- [task resume];
- }
6.文件上传-自定义上传文件名
- + (void)postUploadWithUrl:(NSString *)urlStr fileUrl:(NSURL *)fileURL fileName:(NSString *)fileName fileType:(NSString *)fileTye success:(void (^)(id responseObject))success fail:(void (^)())fail
- {
- // 本地上传给服务器时,没有确定的URL,不好用MD5的方式处理
- AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
- manager.responseSerializer = [AFHTTPResponseSerializer serializer];
- //@"http://localhost/demo/upload.php"
- [manager POST:urlStr parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
- // NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"头像1.png" withExtension:nil];
- // 要上传保存在服务器中的名称
- // 使用时间来作为文件名 2014-04-30 14:20:57.png
- // 让不同的用户信息,保存在不同目录中
- // NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
- // // 设置日期格式
- // formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
- // NSString *fileName = [formatter stringFromDate:[NSDate date]];
- //@"image/png"
- [formData appendPartWithFileURL:fileURL name:@"uploadFile" fileName:fileName mimeType:fileTye error:NULL];
- } success:^(AFHTTPRequestOperation *operation, id responseObject) {
- if (success) {
- success(responseObject);
- }
- } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
- if (fail) {
- fail();
- }
- }];
- }
7.文件上传-随机生成文件名
- + (void)postUploadWithUrl:(NSString *)urlStr fileUrl:(NSURL *)fileURL success:(void (^)(id responseObject))success fail:(void (^)())fail
- {
- AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
- // AFHTTPResponseSerializer就是正常的HTTP请求响应结果:NSData
- // 当请求的返回数据不是JSON,XML,PList,UIImage之外,使用AFHTTPResponseSerializer
- // 例如返回一个html,text...
- //
- // 实际上就是AFN没有对响应数据做任何处理的情况
- manager.responseSerializer = [AFHTTPResponseSerializer serializer];
- // formData是遵守了AFMultipartFormData的对象
- [manager POST:urlStr parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
- // 将本地的文件上传至服务器
- // NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"头像1.png" withExtension:nil];
- [formData appendPartWithFileURL:fileURL name:@"uploadFile" error:NULL];
- } success:^(AFHTTPRequestOperation *operation, id responseObject) {
- // NSString *result = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
- //
- // NSLog(@"完成 %@", result);
- if (success) {
- success(responseObject);
- }
- } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
- NSLog(@"错误 %@", error.localizedDescription);
- if (fail) {
- fail();
- }
- }];
- }
Demo下载地址:AFNetworkingDemo
AFNetworking2.5使用-转的更多相关文章
- AFNetworking2.x 使用过程中遇到的问题
1.//以下写一下关于AFNetworking2.0的GET数据请求问题,刚開始的时候没有写以下标红的代码,所以导致有一个问题.错误显演示样例如以下: Error: Error Domain=AFNe ...
- AFNetworking2.5使用2
链接地址:http://blog.csdn.net/abc4715760/article/details/46521111 官网下载2.5版本:http://afnetworking.com/ 此文章 ...
- AFNetworking2.0简易GET,POST请求封装以及使用
AFNetworking2.0简易GET,POST请求封装以及使用 AFNetworking不用我赘述其强大性,本人仅仅做了非常简易的封装,解决了有时候请求出错的问题,提供源码给大家. 封装源码库下载 ...
- AFNetworking2.0源代码解析
写在前面给大家推荐一个不错的站点 点击打开链接 本文測试样例源代码下载地址 近期看AFNetworking2的源代码.学习这个知名网络框架的实现.顺便梳理写下文章. AFNetworking的代码还在 ...
- AFNetworking2.0源码解析<一>
本篇先看看AFURLConnectionOperation,AFURLConnectionOperation继承自NSOperation,是一个封装好的任务单元,在这里构建了NSURLConnecti ...
- soap request by afnetworking2.X/3.X
for 2.X 参考 http://jiapumin.iteye.com/blog/2109378 AFHTTPRequestOperationManager *manager = [AFHTTPRe ...
- AFNetworking2.4.1 解析
http://wenku.baidu.com/view/6ec734a84028915f814dc26d.html
- AFNetworking2.0 NSHipster翻译
AFNetworking 是当前 iOS 和 Mac OS X 开发中最广泛使用的开源项目之一.它帮助了成千上万叫好又叫座的应用,也为其它出色的开源库提供了基础.这个项目是社区里最活跃.最有影响力的项 ...
- AFNetworking2.0后 进行Post请求
本文以新浪微博的Oauth认证为样例进行Post请求的演示 以下直接上代码: #import "ViewController.h" #import "AFNetworki ...
随机推荐
- 运行计划中cost计算方法
概念: blevel:二元高度=索引高度-1 clustering_factor:集群因子,通过索引扫面得出的要查询table的blocks数量,clustering_factor接近table的bl ...
- form怎样正确post文件
form在HTML中,是用于收集用户输入的,基本全部浏览器都支持form.给form加入method属性.就能实现将用户在form内控件输入的信息POST到制定地址.或发送GET请求. 写了以下一段代 ...
- Xcode The identity used to sign the executable is no longer valid. 错误解决
Xcode真机调试时出现问题:Xcode The identity used to sign the executable is no longer valid. Please verify that ...
- 电子设计省赛--PID
//2014年4月17日 //2014年6月20日入"未完毕"(未完毕) //2014年6月21日 一開始还以为是多难的算法.事实上就是个渣渣. 当然PID实践中应该会非常难. 另 ...
- POJ 1927 Area in Triangle(计算几何)
Area in Triangle 博客原文地址:http://blog.csdn.net/xuechelingxiao/article/details/40707691 题目大意: 给你一个三角形的三 ...
- 命令行方式下登录SqlPlus,密码含特殊字符
全撞上了! 真难侍候!oracle 12c,想登录sql plus,结果没有图形界面,直接出来个命令行.这下好了,我这个数据库,多实例,意味着登录要指定实例:密码中含有特殊字符"@" ...
- mysql数据库存放路径
在你的my.ini 文件中定义的参数 datadir 指定的目录中. SQL code ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 mysql> select @@da ...
- import-module in $profile
$PROFILE C:\Users\clu\Documents\PowerShell\Microsoft.PowerShell_profile.ps1 Import-Module 'C:\Users\ ...
- BZOJ_2819_Nim_树状数组维护出栈入栈序
BZOJ_2819_Nim_树状数组维护出栈入栈序 Description 著名游戏设计师vfleaking,最近迷上了Nim.普通的Nim游戏为:两个人进行游戏,N堆石子,每回合可以取其中某一堆的任 ...
- AutoIT: ControlCommand是一个非常重要的指令
ControlCommand可以确定窗口中的复选框是否选中状态,然后可以对这些复选框进行操作.可以对ComboBox和ListBox进行操作如选择下拉框的某个选项 if WinExists(" ...