iOS 网络操作与AFNetworking
AFNetworking的出现:MAC/iOS设计的一套网络框架.(为了简化网络操作)
二、AFNetworking的使用
关于修改AFN源码:通常序列化时做对text/plan等的支持时,可以一劳永逸的修改源代码,在acceptableContentTypes中修改即可。
AFN进行GET、POST登录:
- #pragma mark - get/post登录
- - (void)getLogin {
- //1.管理器
- AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
- //2.设置登录参数
- NSDictionary *dict = @{ @"username":@"xn", @"password":@"123" };
- //3.请求
- [manager GET:@"http://localhost/login.php" parameters:dict success: ^(AFHTTPRequestOperation *operation, id responseObject) {
- NSLog(@"GET --> %@, %@", responseObject, [NSThread currentThread]); //自动返回主线程
- } failure: ^(AFHTTPRequestOperation *operation, NSError *error) {
- NSLog(@"%@", error);
- }];
- }
- /**
- * 和上面的GET用法完全一样, 只有一个POST参数不一样
- */
- - (void)postLogin {
- //1.管理器
- AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
- //2.设置登录参数
- NSDictionary *dict = @{ @"username":@"xn", @"password":@"123" };
- //3.请求
- [manager POST:@"http://localhost/login.php" parameters:dict success: ^(AFHTTPRequestOperation *operation, id responseObject) {
- NSLog(@"POST --> %@, %@", responseObject, [NSThread currentThread]); //自动返回主线程
- } failure: ^(AFHTTPRequestOperation *operation, NSError *error) {
- NSLog(@"%@", error);
- }];
- }
AFN进行网络数据解析,获取Plist,JSON,XML(AFN不支持自动解析XML,有专门的框架去做,如SAX,PULL,KissXML等)
- #pragma mark - get 数据解析
- - (void)getJSON {
- //1.请求管理器
- AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
- //2.发起请求
- [manager GET:@"http://localhost/videos.json" parameters:nil success: ^(AFHTTPRequestOperation *operation, id responseObject) {
- NSLog(@"%@", responseObject);
- } failure: ^(AFHTTPRequestOperation *operation, NSError *error) {
- NSLog(@"%@", error);
- }];
- }
- /**
- * 不支持XML数据解析
- */
- - (void)getXML {
- //1.管理器
- AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
- //2.设置返回数据类型
- manager.responseSerializer = [AFXMLParserResponseSerializer serializer]; //先实例化一下
- //3.发起请求
- [manager GET:@"http://localhost/videos.xml" parameters:nil success: ^(AFHTTPRequestOperation *operation, id responseObject) {
- NSLog(@"%@", responseObject);
- } failure: ^(AFHTTPRequestOperation *operation, NSError *error) {
- NSLog(@"%@", error);
- }];
- }
- - (void)getPlist {
- //1.管理器
- AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
- //2.设置response类型
- manager.responseSerializer = [AFPropertyListResponseSerializer serializer]; //是Response, 别写成request了. 修改为plist类型.
- manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/plain"]; //这个可以直接往框架里面修改.
- //3.请求
- [manager GET:@"http://localhost/videos.plist" parameters:nil success: ^(AFHTTPRequestOperation *operation, id responseObject) {
- NSLog(@"%@", responseObject);
- } failure: ^(AFHTTPRequestOperation *operation, NSError *error) {
- NSLog(@"%@", error);
- }];
- }
用AFN来POST JSON数据,上传、下载等。(上传、下载主页说明上有https://github.com/AFNetworking/AFNetworking)
- #pragma mark - post json数据与上传文件等
- - (void)postJSON {
- //1.管理器
- AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
- //2.设定类型. (这里要设置request-response的类型)
- manager.requestSerializer = [AFJSONRequestSerializer serializer];
- manager.responseSerializer = [AFHTTPResponseSerializer serializer]; //这个决定了下面responseObject返回的类型
- // manager.responseSerializer = [AFJSONResponseSerializer serializer];
- // manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/plain"];
- //2.设置登录参数
- NSDictionary *dict = @{ @"username":@"xn", @"password":@"123" };
- //3.发送请求
- [manager POST:@"http://localhost/postjson.php" parameters:dict success: ^(AFHTTPRequestOperation *operation, id responseObject) {
- // NSLog(@"postjson--> %@", responseObject); //这样显示JSON的话需要设置text/plain
- NSString *result = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
- NSLog(@"%@",result);
- } failure: ^(AFHTTPRequestOperation *operation, NSError *error) {
- NSLog(@"%@", error);
- }];
- }
iOS 网络操作与AFNetworking的更多相关文章
- 对比iOS网络组件:AFNetworking VS ASIHTTPRequest
对比iOS网络组件:AFNetworking VS ASIHTTPRequest 作者 高嘉峻 发布于 2013年2月28日 | 7 讨论 分享到:微博微信FacebookTwitter有道云笔记邮件 ...
- 【iOS】网络操作与AFNetworking
众所周知.苹果搞的一套框架NSContention发送请求与接收请求的方式十分繁琐.操作起来非常不方便. 不仅要做区分各种请求设置各种不同的參数,并且还要常常在多线程里操作,同一时候还要对请求与返回的 ...
- IOS网络请求框架AFNetworking和ASIHttpRequest对比
ASI基于CFNetwork框架开发,而AFN基于NSURL. ASI更底层,请求使用创建CFHTTPMessageRef进行,使用NSOperationQueue进行管理,ASIHTTPReques ...
- 网络操作与AFNetworking
众所周知,苹果搞的一套框架NSContention发送请求与接收请求的方式十分繁琐.操作起来很不方便.不仅要做区分各种请求设置各种不同的参数,而且还要经常在多线程里操作,同时还要对请求与返回的数据做各 ...
- 对比iOS网络组件:AFNetworking VS ASIHTTPRequest(转载)
在开发iOS应用过程中,如何高效的与服务端API进行数据交换,是一个常见问题.一般开发者都会选择一个第三方的网络组件作为服务,以提高开发效率和稳定性.这些组件把复杂的网络底层操作封装成友好的类和方法, ...
- iOS网络开发之AFNetworking
概述 AFNetworking是一个非常受欢迎的轻量级的iOS.Mac OS X网络通信类库.它建立在NSURLConnection.NSOperation以及其技术的基础上,有着精心设计的模块结构和 ...
- iOS 网络编程:AFNetworking
1 简介 1.1 概念 AFNetworking网络框架并不是IOS自带的框架,而是第三方的开源框架.它是对NSURLConnection和NSURLSession API的封装,但是目前AFNetw ...
- IOS网络请求之AFNetWorking 3.x 使用
前言: 计划把公司的网络请求与业务解耦,所以想着学习一下网络请求,最近学习了NSURLSession,今天来学习一下基于NSURLSession封装的优秀开源框架AFNetWorking 3.x,之前 ...
- iOS开发网络数据之AFNetworking使用
iOS开发网络数据之AFNetworking使用 如何选择AFNetworking版本 首先得下载AFNetworking库文件,下载时得首先弄清楚,你将要开发的软件兼容的最低版本是多少.AFNetw ...
随机推荐
- 应用DBExportDoc导出mysql库为word07文档
1.相关软件下载 DBExportDoc V1.0 For MySQL 密码:znu3 MySQL Connector/ODBC 2.安装mysql-connector-odbc并配置数据源 安装略. ...
- 跨域(二)——WebSocket
严格地说,WebSocket技术不属于HTML5,这个技术是对HTTP无状态连接的一种革新,本质就是一种持久性socket连接,在浏览器客户端通过javascript进行初始化连接后,就可以监听相关的 ...
- 【转】解决Eclipse中SVN版本信息不显示的问题
eclipse 中使用 svn 插件,原本正常,未作任何更改,最近几天突然eclipse 中查看文件时,文件后面的 版本号 . 文件的状态图标 等等都不见了.以为有插件冲突,卸载了好多其他的相关的插件 ...
- 转:jquery操作元素的css样式(获取、修改等等)
//1.获取和设置样式 $("#tow").attr("class")获取ID为tow的class属性 $("#two").attr(&qu ...
- Eclipse代码自动补全
Eclipse自动补全方法 Window -> preferences -> Java -> Editor -> Content assist -> Auto-Activ ...
- LINUX系统一一CentOS6.5之固化Ip
1.查看ip 2.找到网关文件夹 3.编辑ip
- 三种方式监听NGUI的事件方法
NGUI研究院之三种方式监听NGUI的事件方法(七) NGUI事件的种类很多,比如点击.双击.拖动.滑动等等,他们处理事件的原理几乎万全一样,本文只用按钮来举例. 1.直接监听事件 把下面脚本直接绑定 ...
- 线程执行synchronized同步代码块时再次重入该锁过程中抛异常,是否会释放锁
一个线程执行synchronized同步代码时,再次重入该锁过程中,如果抛出异常,会释放锁吗? 如果锁的计数器为1,抛出异常,会直接释放锁: 那如果锁的计数器为2,抛出异常,会直接释放锁吗? 来简单测 ...
- vue 组件中this指向
今天开始学习慕课网的“去哪网”app开发,之前用学了一段时间对vue还是没有深刻理解透,先在开始要从新开始学习vue,今天学的第一堂课是vue 中v-model.v-for的简单例子,以前改变dom中 ...
- Java字节流Stream的使用,创建方法
首先:FileOutputStream写入数据文件 学习父类的方法 使用子类的对象 步骤: 1:子类中的构造方法 作用 :绑定输出的目的地 FileOutputStream fos= new F ...