AFNnetworking快速教程,官方入门教程译

AFNnetworking快速教程,官方入门教程译

分类: IOS2013-12-15 20:29 12489人阅读 评论(5) 收藏 举报

afnetworkingjsonios入门教程快速教程

AFNetworking官网入门教程简单翻译,学习

AFNetworking 是一个能够快速使用的ios和mac os x下的网络框架,它是构建在Foundation URL Loading System之上的,封装了网络的抽象层,可以方便的使用,AFNetworking是一个模块化架构,拥有丰富api的框架。

一、HTTP请求与操作:
1、AFHTTPRequestOperationManager:
该类封装与Web应用程序进行通信通过HTTP,包括要求制作,响应序列化,网络可达性监控和安全性,以及要求经营管理的常见模式。

GET 请求:

[objc] view plaincopyprint?

  1. AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
  2. [manager GET:@"http://example.com/resources.json" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
  3. NSLog(@"JSON: %@", responseObject);
  4. } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
  5. NSLog(@"Error: %@", error);
  6. }];

POST 带有表单参数的POST请求:

[objc] view plaincopyprint?

  1. AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
  2. NSDictionary *parameters = @{@"foo": @"bar"};
  3. [manager POST:@"http://example.com/resources.json" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
  4. NSLog(@"JSON: %@", responseObject);
  5. } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
  6. NSLog(@"Error: %@", error);
  7. }];

POST Multi-Part格式的表单文件上传请求:

[objc] view plaincopyprint?

  1. AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
  2. NSDictionary *parameters = @{@"foo": @"bar"};
  3. NSURL *filePath = [NSURL fileURLWithPath:@"file://path/to/image.png"];
  4. [manager POST:@"http://example.com/resources.json" parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
  5. [formData appendPartWithFileURL:filePath name:@"image" error:nil];
  6. } success:^(AFHTTPRequestOperation *operation, id responseObject) {
  7. NSLog(@"Success: %@", responseObject);
  8. } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
  9. NSLog(@"Error: %@", error);
  10. }];

二、Session管理:
1、AFURLSessionManager:创建和管理制定的NSURLSession对象
2、NSURLSessionConfiguration对象必须实现<NSURLSessionTaskDelegate>, <NSURLSessionDataDelegate>, <NSURLSessionDownloadDelegate>, <NSURLSessionDelegate>协议

创建一个下载任务:

[objc] view plaincopyprint?

  1. NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
  2. AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
  3. NSURL *URL = [NSURL URLWithString:@"http://example.com/upload"];
  4. NSURLRequest *request = [NSURLRequest requestWithURL:URL];
  5. NSURL *filePath = [NSURL fileURLWithPath:@"file://path/to/image.png"];
  6. NSURLSessionUploadTask *uploadTask = [manager uploadTaskWithRequest:request fromFile:filePath progress:nil completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {
  7. if (error) {
  8. NSLog(@"Error: %@", error);
  9. } else {
  10. NSLog(@"Success: %@ %@", response, responseObject);
  11. }
  12. }];
  13. [uploadTask resume];

创建一个数据流任务:

[objc] view plaincopyprint?

  1. NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
  2. AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
  3. NSURL *URL = [NSURL URLWithString:@"http://example.com/upload"];
  4. NSURLRequest *request = [NSURLRequest requestWithURL:URL];
  5. NSURLSessionDataTask *dataTask = [manager dataTaskWithRequest:request completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {
  6. if (error) {
  7. NSLog(@"Error: %@", error);
  8. } else {
  9. NSLog(@"%@ %@", response, responseObject);
  10. }
  11. }];
  12. [dataTask resume];

四、使用AFHTTPRequestOperation
1、AFHTTPRequestOperation是使用HTTP或HTTPS协议的AFURLConnectionOperation的子类。
它封装的获取后的HTTP状态和类型将决定请求的成功与否。
2、虽然AFHTTPRequestOperationManager通常是最好的去请求的方式,但是AFHTTPRequestOpersion也能够单独使用。

通过GET方式:

[objc] view plaincopyprint?

  1. NSURL *URL = [NSURL URLWithString:@"http://example.com/resources/123.json"];
  2. NSURLRequest *request = [NSURLRequest requestWithURL:URL];
  3. AFHTTPRequestOperation *op = [[AFHTTPRequestOperation alloc] initWithRequest:request];
  4. op.responseSerializer = [AFJSONResponseSerializer serializer];
  5. [op setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
  6. NSLog(@"JSON: %@", responseObject);
  7. } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
  8. NSLog(@"Error: %@", error);
  9. }];
  10. [[NSOperationQueue mainQueue] addOperation:op];

连续操作多个:

[objc] view plaincopyprint?

  1. NSMutableArray *mutableOperations = [NSMutableArray array];
  2. for (NSURL *fileURL in filesToUpload) {
  3. NSURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:@"http://example.com/upload" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
  4. [formData appendPartWithFileURL:fileURL name:@"images[]" error:nil];
  5. }];
  6. AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
  7. [mutableOperations addObject:operation];
  8. }
  9. NSArray *operations = [AFURLConnectionOperation batchOfRequestOperations:@[...] progressBlock:^(NSUInteger numberOfFinishedOperations, NSUInteger totalNumberOfOperations) {
  10. NSLog(@"%lu of %lu complete", numberOfFinishedOperations, totalNumberOfOperations);
  11. } completionBlock:^(NSArray *operations) {
  12. NSLog(@"All operations in batch complete");
  13. }];
  14. [[NSOperationQueue mainQueue] addOperations:operations waitUntilFinished:NO];
时间: 2024-10-26 16:41:48

AFNnetworking快速教程,官方入门教程译的相关文章

OsharpNS轻量级.net core快速开发框架简明入门教程-Osharp.Hangfire使用

OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. OsharpNS.Swagger使用实例(登录和授权) 1.4. Angular6的前端项目启动 Osharp代码生成器的使用 2.1 生成器的使用 2.2 生成代码详解(如何自己实现业务功能) Osharp部分模块使用 3.1 Osharp.Redis使用 3.2 Osharp.Hangfire使用

Express 教程 01 - 入门教程之经典的Hello World

目录: 前言 一.Express?纳尼?! 二.开始前的准备工作 三.测试安装之经典的Hello World 四.使用express(1)来生成一个应用程序 五.说明 前言: 本篇文章是建立在Node.js基础之上的,所以读者需要有一点Node.js基础的了解. 演示我是按照Windows操作系统来的了.Linux的其实命令都差不多,大家应该也可以发现. 我也是刚学这个,所以很多东西都是我从各大网站上照的,然后附上了我的实践操作及自己的说明吧. 有什么错误,希望大家及时指明,也请大家见谅.. 一

【转】MUD教程--巫师入门教程1

<新巫师入门手册> 第一章:观念篇■ 内容提要:什么是巫师?怎样做一个巫师?如何做好一个巫师? 第二章:上手篇■ 内容提要:最简单的房间怎么写?NPC又怎么写?先看懂一些常用的参数? 第三章:理解篇■ 内容提要:什么是LPC?什么是函数.对象?只有理解才有利于消化 第四章:见习篇■ 内容提要:我要工作了,怎么edit?怎么update?又怎么用call? 第五章:补遗篇■ 内容提要:好好消化变量.函数的意义,完全掌握各种符号的运用. 巫师园地 入门手册 观念篇 第 一 章 观 念 篇  认 识

MUD教程--巫师入门教程3

1. 指令格式为:edit <档名>,只加文件名,默认为当前目录,加here,表示编辑你当前所处的房间, 回车后即进入线上编辑系统. 2. 如果这是一个已经有的档案,你可以使用 z 或 Z 来看档案.z表示一次显示20行,Z表示一次显示40行.为了编辑方便,最好在开始时用 n 表示每一行在开头处显示它的行数,再用一次 n 取消行数显示: 3. 还有一种方法 ,就是直接打入行数,则会跳至那行的内容上:4. 如果你开始没打 n ,却想知道现在是第几行请打 = , 想知道内容请打 p :5 如果想直

【转】MUD教程--巫师入门教程2

简单的人物原则上只要有 set_name<名字> . combat_exp <经验>就行了,当然我们总得稍微多添一点了.inherit NPC;void create(){ set_name(<中文名>, ({ <英文id> }) ); set("title", <头衔>);  set("gender",<男性.女性或是无性>); set("age", <年龄>)

【转】MUD教程--巫师入门教程4

我们再次复习一下clean_up()函数返回1的含义,如果clean_up()函数返回1,则MUDOS在这一次的调用时不会做其的任何举动,但到了下一次想调用的时间里,还将再次调用这个对象的clean_up()函数.那么从这可以看出,有以下四种情况不会将其清除出内存:一.非clone出来并且有no_clean_up参数的对象:二.玩家永远不会三.处于一个还存在的环境里四.自己里面存在着玩家 也就是MUDOS定时摧毁内存不需要的对象是由外向内的,比如一个房间,系统只要检查这个房间里没有no_clea

Quartus II 破解教程—FPGA入门教程【钛白Logic】

这一节主要说明如何破解Quartus II 13.1.首先找到我们提供的破解工具,这里我们的电脑是64位的,所以使用64位破解器.如下图. 第一步:将破解工具拷贝到安装目录下“D:\altera\13.1\quartus\bin64”,然后打开破解工具,弹出如下对话框,点击“应用”. 第二步:选择生成license文件的存放路径,这里我们存到安装路径根目录下:“D:\altera”,保存. 第三步:安装license文件,打开Quartus II,选择菜单栏工具“Tools”下面的“Licens

Quartus II 安装教程—FPGA入门教程

Quartus II 工具安装一般分为两个部分,首先是开发工具本身的安装,其次就是器件库的安装,我们可以根据我们的需要选择相应的器件库来安装,这里我们使用Cyclone IV的FPGA,即安装Cyclone器件库即可. 第一步:打开我们的软件安装文件夹找到安装文件,双击打开,如下图. 第二步:弹出如下对话框,点击Next下一步. 第三步:弹出如下对话框,选择"I accept the agreement",再点击Next. 第四步:选择安装路径,这里我们选择安装在了D盘目录D:\alt

网页3D引擎“Babylon.JS”入门教程翻译总结

使用三个月的业余时间把官方教程的入门部分译为中文并上传到github,在下一步编程前做一个总结. 历程: 最早接触游戏编程是在大三下学期,用汇编语言和实验室里的单片机.触摸屏.电机(提供声效)编的打地鼠程序.后来因为大四的毕业设计与三维空间模拟有关,又自学了MFC编程和NEHE的OpenGL教程(国人翻译版)(C++3D编程的复杂会给任何参与者留下深刻的印象,向先驱者们致敬).工作后自学了JavaScript语言和前端知识,感觉js与C++相比极其简单易用,如果能以js代替C++进行3D开发可以