文档章节

IOS网络--AFNetworking

求是科技
 求是科技
发布于 2015/03/16 17:15
字数 684
阅读 51
收藏 0

http://cocoadocs.org/docsets/AFNetworking/2.5.0/

AFNetworking的用法

  1. 提交GET请求和POST请求

AFNetworking是第三方框架,阅者自行去官网上下载、安装。

1>创建AFHTTPRequestOpeartionManger对象

2>根据服务器内容不同,为AFHTTPRequestOpeartionManger对象指定不同的解析器,该对象默认的解析器是JSON和plist文件解析器。

3>发送GET请求,用Manager对象调用GET方法即可,success代码块和failure代码块是在网络请求成功/失败后调用。

4>success参数指定了代码块中处理服务器响应成功的正确数据;failure参数指定了代码块中处理服务器响应失败的错误数据。

AFHTTPRquestOperationManager

包含了常见的HTTP访问web站点的模式,有创建请求、连接响应、网络类型监视等。

“GET”请求格式:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
//调用get方法
[manager GET:@“http://example.com/resources.json”  parameters:parameters 
//加载成功的代码块
success:^(AFHTTPRequestOperation *operation,id responseObject)
         {
             NSLog(@"JSON:%@",responseObject);
         }
//加载失败的代码块
failure:^(AFHTTPRequestOperation *operation,NSError *error)
         {
             NSLog(@"Error:%@",error);
         }];

"POST"请求格式:

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

"POST"多个请求

//创建对象
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
//请求内容
NSDictionary *parameters = @{@"foo": @"bar"};
//请求地址
NSURL *filePath = [NSURL fileURLWithPath:@"file://path/to/image.png"];
[manager POST:@"http://example.com/resources.json" parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
    [formData appendPartWithFileURL:filePath name:@"image" error:nil];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"Success: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];

2.创建一个下载文件任务

NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
NSURL *URL = [NSURL URLWithString:@"http://example.com/download.zip"];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
    NSURL *documentsDirectoryURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil];
    return [documentsDirectoryURL URLByAppendingPathComponent:[response suggestedFilename]];
} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
    NSLog(@"File downloaded to: %@", filePath);
}];
[downloadTask resume];

3.创建一个跟新(上传)文件任务

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

4.处理JSON或plist响应

IOS应用在处理JSON和Plist响应的时候可以将其转换成NSDictionary对象或是NSArray对象,AFHTTPRequestOperationManager默认可以处理JSON或plist响应,因此当响应内容默认为JSON时,无需再次指定服务器响应解析器。

NSDictionary *temDic = [[NSDictionary alloc] init];

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
        NSString *url = @"http://api.map.baidu.com/telematics/v3/weather?";
        NSDictionary *parameters = @{@"location":@"长沙",@"output":@"json",@"ok":@"akljhgffg"};
        [manager GET:url parameters:parameters success:^(AFHTTPRequestOperation *operation,id responseObject)
         {
             NSLog(@"JSON:%@",responseObject);
             temDic = responseObject;
             
             
         }failure:^(AFHTTPRequestOperation *operation,NSError *error)
         {
             NSLog(@"Error:%@",error);
         }];



http://www.cocoachina.com/ios/20141120/10265.html

 

© 著作权归作者所有

求是科技

求是科技

粉丝 98
博文 451
码字总数 232301
作品 0
成都
后端工程师
私信 提问
OC使用AFNetWorking框架GET方法上传参数格式不是JSON串

iOS的APP端使用AFNetWorking这个框架连接服务器, 项目约定使用GET方法传参, 现在遇到问题是:iOS传的参数要组合成“字典”放入AFNetWorking,然后用AFNetWorking开始请求, 而AFNetWorking会...

Moses_Fu
2015/10/26
1K
0
iOS下的Http库AFNetworking

在iOS下开发一直是用ASIHTTPRequest库,ASIHTTPRequest已经停止更新,看了这个文章http://www.oschina.net/news/61416/github-top-100-objective-c-projects (原文https://github.com/Aufr......

vane_
2015/04/11
0
0
iOS源码补完计划--AFNetworking 3.1.0源码研读

参拜一下AFNetworking的源码。 第四篇源码、暂时来看也是iOS方向的最后一篇、撸完准备趁着热乎撸一撸网络协议。 目录 准备工作 功能模块 AFURLSessionManager/AFHTTPSessionManager AFNetwo...

kirito_song
2018/05/25
0
0
AFNetworking 2.0 发布,iOS 网络框架

AFNetworking 是一款在 iOS 开发中广泛使用的网络框架,其刚刚发布最新的 2.0 版本,主要改进: 架构重构 支持 NSURLSession Serialization Modules Expanded UIKit Extensions Real-time f...

oschina
2013/09/28
9K
5
iOS源码补完计划--AFNetworking(二)

目录 前言 AFNetworkReachabilityManager.h AFNetworkReachabilityManager.m API注释Demo 参考资料 前言 AFNetworking源码第二篇 主要看了看AFNetworkReachabilityManager的内容 作为一个辅助...

kirito_song
2018/05/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

哨兵作用

https://www.cnblogs.com/kaleidoscope/p/9636496.html

Java搬砖工程师
32分钟前
1
0
好程序员web前端教程分享CSS技巧!

好程序员web前端教程分享CSS技巧!现在学web人越来越多,小白的问题也越来越多,那么今天就为大家分享一下CSS学习技巧!在web前端工作中离不开css的使用。为了帮助大家提高自己的css使用技巧...

好程序员IT
35分钟前
1
0
PhpStudy升级MySQL5.5到5.7记录

1.下载mysql 5.7 https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.25-winx64.zip 2.备份目前的数据库数据,可以导出数据库文件,作为备份。 3.备份 PhpStudy 下的 MySQL 文件夹、以防升...

win_ball
36分钟前
3
0
Java8 JVM参数解读

摘要: 我们知道java虚拟机启动时会带有很多的启动参数,Java命令本身就是一个多参数的启动命令。那么具体JVM启动包含哪些参数呢?这篇文章针对java8的情况做一篇汇总解读,包含大多数常见和...

xiaomin0322
39分钟前
1
0
maven中关于scope依赖范围

既然,Maven的生命周期存在编译、测试、运行这些过程,那么显然有些依赖只用于测试,比如junit;有些依赖编译用不到,只有运行的时候才能用到,比如mysql的驱动包在编译期就用不到(编译期用...

syso_Null
42分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部