AFNetworking使用总结
AFNetworking使用总结
关于AFNetworking使用总结 以及一些错误的解决办法。
AFNetworking使用总结
分享类型:游戏开发相关
1 将AFNetWorking文件夹导入项目
2 添加类库 Security.framework、MobileCoreServices.framework、SystemConfiguration.framework
3 在使用的地方 #import "AFNetworking.h"
解决编译时警告:
- Prefix.pch文件中加入
- #import <SystemConfiguration/SystemConfiguration.h>
- #import <MobileCoreServices/MobileCoreServices.h>
注:AFNetWorking使用了ARC ,在不使用ARC项目中使用时,对AFNetWorking的所有.m文件添加“-fobjc-arc”
在使用ARC项目中,使用“不使用ARC”的类库时,对类库的.m文件添加“-fno-objc-arc”
[plain] view plaincopy
- static NSString*const BaseURLString = @"http://www.raywenderlich.com/downloads/weather_sample/";
- // 1 NSString *weatherUrl = [NSStringstringWithFormat:@"%@weather.php?format=json",BaseURLString]; NSURL *url = [NSURLURLWithString:weatherUrl]; NSURLRequest *request = [NSURLRequestrequestWithURL:url]; // 2 AFJSONRequestOperation *operation = [AFJSONRequestOperationJSONRequestOperationWithRequest:request success:^(NSURLRequest*request, NSHTTPURLResponse *response, id JSON) { // NSDictionary*dicWeather = (NSDictionary *)JSON; NSLog(@"result:%@",dicWeather); } failure:^(NSURLRequest*request, NSHTTPURLResponse *response, NSError *error, id JSON) { UIAlertView*alertView = [[UIAlertView alloc] initWithTitle:@"Error RetrievingWeather" message:[NSStringstringWithFormat:@"%@",error] delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil]; [alertView show]; }]; // 5 [operation start];
(1)根据基本的URL构造除完整的一个URL,然后通过这个完整的URL获得一个NSURL对象,然后根据这个url获得一个NSURLRequest。
(2)AFJSONRequestOperation是一个完整的类,整合了从网络中获取数据并对JSON进行解析。
(3)当请求成功,则运行成功块。在本例中,把解析出来的天气数据从JSON变量转换为一个字典(dictionary),并将其存储在字典中。
(4)如果运行出问题了,则运行失败块(failure block),比如网络不可用。如果failure block被调用了,将会通过提示框显示错误信息。
6.AFNetWorking异步加载图片
- [plain] view plaincopy
- [list=1](1)#import “UIImageView+AFNetworking.h” (2)UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(40, 80, 40, 40)]; __weak UIImageView *_imageView = imageView; [imageViewsetImageWithURLRequest:[[NSURLRequest alloc] initWithURL:[NSURLURLWithString:@"http://www.worldweatheronline.com/images/wsymbols01_png_64/wsymbol_0001_sunny.png"]] placeholderImage:[UIImage imageNamed:@"placeholder.png"] success:^(NSURLRequest *request,NSHTTPURLResponse *response, UIImage *image) { _imageView.image = image;
- [_imageView setNeedsDisplay]; } failure:^(NSURLRequest *request, NSHTTPURLResponse*response, NSError *error) { ; }]; [self.view addSubview:imageView];
7.GET 和POST请求
(1).构建一个baseURL,以及一个参数字典,并将这两个变量传给AFHTTPClient.
(2).将AFJSONRequestOperation注册为HTTP的操作, 这样就可以跟之前的示例一样,可以获得解析好的JSON数据。
(3).做了一个GET请求,这个请求有一对block:success和failure。
(4).POST请求跟GET一样
[plain]view plaincopy
- [list=1]AFHTTPClient *client= [[AFHTTPClient alloc] initWithBaseURL:baseURL]; [clientregisterHTTPOperationClass:[AFJSONRequestOperation class]]; [clientsetDefaultHeader:@"Accept" value:@"application/json"]; [client postPath:@"weather.php" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) { self.weather =responseObject; self.title = @"HTTPPOST"; [self.tableViewreloadData]; } failure:^(AFHTTPRequestOperation *operation, NSError*error) { UIAlertView *av =[[UIAlertView alloc] initWithTitle:@"Error Retrieving Weather" message:[NSStringstringWithFormat:@"%@",error] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [av show]; } ];
- [client getPath:@"weather.php" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) { self.weather =responseObject; self.title = @"HTTP GET"; [self.tableViewreloadData]; } failure:^(AFHTTPRequestOperation *operation, NSError*error) { UIAlertView *av =[[UIAlertView alloc] initWithTitle:@"Error Retrieving Weather" message:[NSStringstringWithFormat:@"%@",error] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [av show];
- } ];
另外,请求方式可以创建一个类继承AFHTTPClient ,官方的例子就是这样写的。
状态栏设置
在Appdelegate里面的 - (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 方法中添加 [[AFNetworkActivityIndicatorManager sharedManager] setEnabled:YES];用来给用户做出网络访问的提示。
请求超时设置
timeout和参数都是在NSURLRequest/NSMutableURLRequest设置的
- [list=1]
- NSMutableURLRequest *request = [client requestWithMethod:@"GET" path:@"/" parameters:nil];//这里的parameters:参数就是你的第二个问题如何设置参数
- [request setTimeoutInterval:120];
- AFHTTPRequestOperation *operation = [client HTTPRequestOperationWithRequest:request success:^{...} failure:^{...}];
- [client enqueueHTTPRequestOperation:operation];
如果你是继承了AFHTTPClient
就需要override一个方法requestWithMethod
- - (NSMutableURLRequest *)requestWithMethod:(NSString *)method path:(NSString *)path parameters:(NSDictionary *)parameters{
- NSMutableURLRequest *request = [super requestWithMethod:method path:path parameters:parameters];
- [request setTimeoutInterval:15];
- return request; }
这个时候的参数设置是调用
- [self postPath:@"" parameters:nil //参数
- success:^(AFHTTPRequestOperation *operation, id responseObject) {
- if (success) {
- success((AFJSONRequestOperation *)operation, responseObject);
- }
- } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
- if (failure) {
- failure((AFJSONRequestOperation *)operation, error);
- }
- }];
本文链接:http://www.cocoachina.com/bbs/read.php?tid=184183
AFNetworking使用总结的更多相关文章
- 【原】AFNetworking源码阅读(六)
[原]AFNetworking源码阅读(六) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这一篇的想讲的,一个就是分析一下AFSecurityPolicy文件,看看AF ...
- 【原】AFNetworking源码阅读(五)
[原]AFNetworking源码阅读(五) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇中提及到了Multipart Request的构建方法- [AFHTTP ...
- 【原】AFNetworking源码阅读(四)
[原]AFNetworking源码阅读(四) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇还遗留了很多问题,包括AFURLSessionManagerTaskDe ...
- 【原】AFNetworking源码阅读(三)
[原]AFNetworking源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇的话,主要是讲了如何通过构建一个request来生成一个data tas ...
- 【原】AFNetworking源码阅读(二)
[原]AFNetworking源码阅读(二) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇中我们在iOS Example代码中提到了AFHTTPSessionMa ...
- 【原】AFNetworking源码阅读(一)
[原]AFNetworking源码阅读(一) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 AFNetworking版本:3.0.4 由于我平常并没有经常使用AFNetw ...
- AFNetworking 3.0 源码解读 总结(干货)(下)
承接上一篇AFNetworking 3.0 源码解读 总结(干货)(上) 21.网络服务类型NSURLRequestNetworkServiceType 示例代码: typedef NS_ENUM(N ...
- AFNetworking 3.0 源码解读 总结(干货)(上)
养成记笔记的习惯,对于一个软件工程师来说,我觉得很重要.记得在知乎上看到过一个问题,说是人类最大的缺点是什么?我个人觉得记忆算是一个缺点.它就像时间一样,会自己消散. 前言 终于写完了 AFNetwo ...
- AFNetworking 3.0 源码解读(十一)之 UIButton/UIProgressView/UIWebView + AFNetworking
AFNetworking的源码解读马上就结束了,这一篇应该算是倒数第二篇,下一篇会是对AFNetworking中的技术点进行总结. 前言 上一篇我们总结了 UIActivityIndicatorVie ...
- AFNetworking 3.0 源码解读(十)之 UIActivityIndicatorView/UIRefreshControl/UIImageView + AFNetworking
我们应该看到过很多类似这样的例子:某个控件拥有加载网络图片的能力.但这究竟是怎么做到的呢?看完这篇文章就明白了. 前言 这篇我们会介绍 AFNetworking 中的3个UIKit中的分类.UIAct ...
随机推荐
- ural 1090 In the Army Now
http://acm.timus.ru/problem.aspx?space=1&num=1090 #include <cstdio> #include <cstring&g ...
- word 生成目录
生成目录: (1)Ctrl+End,到达文档的最后一页: (2)"插入"菜单--引用--索引和目录(此时出现索引和目录对话框): (3)单击"目录"选项卡 a. ...
- 【HDOJ】1513 Palindrome
DP,MLE后改为滚动数组AC. #include <cstdio> #include <cstring> #include <cstdlib> #define M ...
- COJ 0802 非传统题(二)
(颓了这么多天是时候干点正事了QAQ) 非传统题(二) 难度级别:B: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 还是很久很久以前,chx ...
- 【转】Beaglebone Black
原文网址:http://bbs.eeworld.com.cn/thread-431409-1-1.html 开源硬件在国外火得一塌糊涂,国内却没有那么多人玩,直接导致中文论坛资料严重缺乏……但这也挡不 ...
- 手机上使用asmack开发xmpp客户端
openfire服务端,smack: 下载地址:http://www.igniterealtime.org/downloads/index.jsp 源代码:http://www.ign ...
- Java框架学习之Hibernate入门
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. Hibernate可以应用在任何使用JDB ...
- Linux 之 rsyslog 系统日志转发(转载)
一.rsyslog 介绍 ryslog 是一个快速处理收集系统日志的程序,提供了高性能.安全功能和模块化设计.rsyslog 是syslog 的升级版,它将多种来源输入输出转换结果到目的地,据官网介绍 ...
- animate.min.css 动画样式移动端存在的问题
使用animate.min.css可以使用很多动画效果,包括3D效果,现在也可以应用于HTML5手机移动端,使用切换效果的时候会导致页面出现卡顿现象,可以使用css3 transform 方法硬件加速 ...
- StringBuffer学习笔记
StringBuffer是什么? StringBuffer是使用缓冲区的,本身也是操作字符串的,它是一个具体的操作类.与String类不同的是,它其中的内容是可以改变的.它不能像String那样采用直 ...