AFNetworking 使用  基础篇

1. AFN一套网络操作的第三方框架
a. NSURLConnection iOS2.0之后就有
b. NSURLSession iOS7.0之后才有
c. 默认支持序列化和反序列化json,xml需要自己解析 d. 优秀的错误处理机制
e. 封装了Reachability

f. 支持https

AFHTTPRequestOperationManager初始化的方法

○ self.requestSerializer = [AFHTTPRequestSerializer serializer];请求数据的序列化

○ self.responseSerializer = [AFJSONResponseSerializer serializer]; 返回数据的序列化

• <AFURLRequestSerialization>

发送给服务器的数据
二进制(默认)
json

plist 从服务器接收的数据

○ AFHTTPRequestSerializer
○ AFJSONRequestSerializer
○ AFPropertyListRequestSerializer

<AFURLResponseSerialization>
○ AFHTTPResponseSerializer
○ AFJSONResponseSerializer
○ AFXMLParserResponseSerializer
○ AFXMLDocumentResponseSerializer ○ AFPropertyListResponseSerializer ○ AFImageResponseSerializer

○ AFCompoundResponseSerializer

// get请求 不带参数

- (void)demo1{
    NSString *str = @"http://127.0.0.1/demo11.json";
//创建一个管理者
    AFHTTPRequestOperationManager *manager =[AFHTTPRequestOperationManager manager];
    //管理者发起请求
    [manager GET:str parameters:nil success:^void(AFHTTPRequestOperation *ope , id json) {
        NSLog(@"%@",json);
    } failure:^void(AFHTTPRequestOperation *op, NSError *error) {
        NSLog(@"%@",error);
    }];
}

//带参数的get

- (void)demo2{
    NSString *str = @"http://127.0.0.1/php/login.php";

    AFHTTPRequestOperationManager *manager =[AFHTTPRequestOperationManager manager];
    //发送的参数
    NSDictionary *dic = @{@"username":@"123&abc",@"password":@"abc"};

    [manager GET:str parameters:dic success:^void(AFHTTPRequestOperation *ope , id json) {
        NSLog(@"%@",json);
    } failure:^void(AFHTTPRequestOperation *op, NSError *error) {
        NSLog(@"%@",error);
    }];
}

//带参数的post

- (void)demo3{
    NSString *str = @"http://127.0.0.1/php/login.php";

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    //发送的参数
    NSDictionary *dic = @{@"username":@"123&abc",@"password":@"abc"};

    [manager POST:str parameters:dic success:^ void(AFHTTPRequestOperation *op , id json) {
        NSLog(@"%@",json);
    } failure:^ void(AFHTTPRequestOperation *op, NSError *error) {
        NSLog(@"%@",error);
    }];
}

//post上传文件

- (void)demo4{
    NSString *str = @"http://127.0.0.1/upload/upload.php";

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    [manager POST:str parameters:nil constructingBodyWithBlock:^ void(id<AFMultipartFormData> formData) {

//        userfile
        //上传文件
        NSURL *fileUrl = [[NSBundle mainBundle] URLForResource:@"swifter.pdf" withExtension:nil];
        [formData appendPartWithFileURL:fileUrl name:@"userfile" fileName:@"aaa.pdf" mimeType:@"application/pdf" error:nil];

    } success:^ void(AFHTTPRequestOperation *op, id json) {
        NSLog(@"%@",json);
    } failure:^ void(AFHTTPRequestOperation *op, NSError *error) {
        NSLog(@"%@",error);
    }];
}

//设置解析响应的serializer  默认是JOSN  如果要返回html 或其它格式。必须要手动设置

- (void)demo5{
    NSString *str = @"http://www.baidu.com";

     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

    //设置解析响应的serializer
    manager.responseSerializer = [AFHTTPResponseSerializer serializer];

    [manager GET:str parameters:nil success:^ void(AFHTTPRequestOperation *op, id data) {
        NSString *html = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

        NSLog(@"%@",html);

    } failure:^ void(AFHTTPRequestOperation *op, NSError *error) {
        NSLog(@"%@",error);
    }];
}

   //josn 以html 格式返回的代码

- (void)demo7{
    NSString *str = @"http://c.m.163.com/nc/article/headline/T1348647853363/0-140.html";
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

    manager.responseSerializer.acceptableContentTypes =[NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html", nil];

    [manager GET:str parameters:nil success:^void(NSURLSessionDataTask *op, id data) {
        NSLog(@"%@",data);

    } failure:^ void(NSURLSessionDataTask *op, NSError *error) {
        NSLog(@"%@",error);
    }];
}
时间: 2024-12-29 07:35:19

AFNetworking 使用  基础篇的相关文章

oracle(sql)基础篇系列(五)&mdash;&mdash;PLSQL、游标、存储过程、触发器

  PL/SQL PL/SQL 简介 每一种数据库都有这样的一种语言,PL/SQL 是在Oracle里面的一种编程语言,在Oracle内部使用的编程语言.我们知道SQL语言是没有分支和循环的,而PL语言是为了补充SQL语言的,是带有了分支和循环的语言. PL/SQL 语法 基本数据类型声明 declare v_name varchar2(20); v_temp number(1); v_count binary_integer := 0; v_sal number(7,2) := 4000.00

Hybrid APP基础篇(四)-&gt;JSBridge的原理

说明 JSBridge实现原理 目录 前言 参考来源 前置技术要求 楔子 原理概述 简介 url scheme介绍 实现流程 实现思路 第一步:设计出一个Native与JS交互的全局桥对象 第二步:JS如何调用Native 第三步:Native如何得知api被调用 第四步:分析url-参数和回调的格式 第五步:Native如何调用JS 第六步:H5中api方法的注册以及格式 进一步完善JSBridge方案 思路 实现 注意 完整的JSBridge 完整调用流程图 另外实现:不采用url sche

网络基础篇----计算机网络基本概述(1)

享受生活  热爱挑战                                                                刘明远分享    一   计算机网络基本概述(1) 每章一段话: 不要让自己闲下来,给自己找些事情做.哪怕是看看书. 正文   (提示:本章内容比较无聊,最好当看故事一样来看,不必记下只需了解,内容基础) 1什么是计算机网络 号称新的"电力火花"是以计算机.通信.信息技术为支撑的计算机网络技术. 计算机网络将两台或多台计算机通过电缆或网络设

js调试系列: 源码定位与调试[基础篇]

js调试系列目录: - 如果看了1, 2两篇,你对控制台应该有一个初步了解了,今天我们来个简单的调试.昨天留的三个课后练习,差不多就是今天要讲的内容.我们先来处理第一个问题:1. 查看文章下方 推荐 这个功能所调用的函数源码其实非常简单,点放大镜选中那个推荐即可.这个  votePost(cb_entryId,'Digg')  就是推荐按钮所调用的函数了,是不是非常简单. 第二个问题,定位到函数所在文件位置.其实也是非常简单的,当然,不熟悉控制台的朋友也许不知道怎么看.我在控制台输入 voteP

DOM系列---基础篇

DOM (Document Object Model) 即文档对象模型, 针对 HTML 和 XML 文档的 API (应用程序接口) .DOM 描绘了一个层次化的节点树,运行开发人员添加.移除和修改页面的某一部分.DOM 产生于 网景公司及微软公司创始的 DHTML(动态 HTML) ,但现在它已经成为表现和操作页面标记的真正跨平台.语言中立的方式. DOM 中的三个字母: D(文档)可以理解为整个 Web 加载的网页文档: O(对象)可以理解为类似 window 对象之类的东西,可以调用属性

深入理解iPhone数据持久化(手把手教你iphone开发 – 基础篇)

在所有的移动开发平台数据持久化都是很重要的部分:在j2me中是rms或保存在应用程序的目录中,在symbian中可以保存在相应的磁盘目录中和数据库中.symbian中因为权限认证的原因,在3rd上大多数只能访问应用程序的private目录或其它系统共享目录.在iphone中,apple博采众长,提供了多种数据持久化的方法,下面笔者会逐个进行详细的讲解. iphone提供的数据持久化的方法,从数据保存的方式上讲可以分为三大部分:属性列表.对象归档.嵌入式数据库(SQLite3).其他方法. 一.属

Qt入门之基础篇 ( 二 ) :Qt项目建立、编译、运行和发布过程解析

转载请注明出处:CN_Simo. 题解: 本篇内容主讲Qt应用从创建到发布的整个过程,旨在帮助读者能够快速走进Qt的世界. 本来计划是讲解Qt源码静态编译,如此的话读者可能并不能清楚地知道为何要静态编译,所以借此篇内容说明一下原由并为之后文章的学习做准备. 即使本片内容只是在围绕一个小小的HelloWorld程序开展,但还是希望朋友们不要急于求成,"欲速则不达". 文章整体思路: 我们循序渐进地来看,一个Qt应用的完成有以下一个重要的步骤: 项目创建->源码编译->程序运行

php面试题汇总二(基础篇附答案)

介绍一些php常见面试题及答案,都是平时面试的时候经常会遇到的,小伙伴们仔细了解下吧.接着上一篇php面试题汇总一(基础篇附答案) 1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量(1)中:而链接到当前页面的URL记录在预定义变量(2)中. 答:echo $_SERVER['PHP_SELF']; echo $_SERVER["HTTP_REFERER"]; 2:数组函数 arsort 的作用是(6):语句 error_reporting(2047)的作用是(7

shell脚本编程之基础篇(二)

shell脚本编程之基础篇(二) ============================================================================== 概述: ============================================================================== 退出状态 ★进程使用退出状态来报告成功或失败 ◆0 代表成功,1-255代表失败 ◆$? 变量保存最近的命令退出状态 (查看:echo $?)