iOS网络第三方使用方法大全AFNetworking/ASIHTTPRequest/MKNetworkKit

1. 参与对比的孩子有 AFNetworking/ASIHTTPRequest/MKNetworkKit

  1. GET

    1~ 新建工程: SingleProject 带故事板的、 为了我们测试的方便

    2~ 打开系统命令提示符 ->  使用cocoapods 下载这3个第三方库 -> 如果不会使用cocoapods请百度cocoapods-> 然后确认环境、 进行安装

    3~ podfile:

platform: iOS, ‘7.0‘
pod "AFNetworking", "~> 版本号" // 版本号自己去看
pod "ASIHTTPRequest", "~>"
pod "MKNetworkkit", "~>"

    4~ 开始对比方法 我们使用ARC    注:ASI是MRC 如果需要的话, 在Buile Phases里边为她的文件添加 -fno-objc-arc    

 1 //
 2 //  ADViewController.m
 3 //  Networking
 4 //
 5 //  Created by 薛雨仑 on 14-10-6.
 6 //  Copyright (c) 2014年 Dylan. All rights reserved.
 7 //
 8
 9 #import "ADViewController.h"
10 #import <AFNetworking.h>
11 #import <ASIHTTPRequest.h>
12 #import <MKNetworkKit.h>
13
14 @interface ADViewController () <ASIHTTPRequestDelegate>
15
16 @end
17
18 @implementation ADViewController
19
20 - (void)viewDidLoad
21 {
22     [super viewDidLoad];
23
24     // Get
25     AFHTTPRequestOperationManager * manager = [AFHTTPRequestOperationManager manager];
26     [manager GET:@"example.com" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
27
28     } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
29
30     }];
31
32     ASIHTTPRequest * request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:@"example.com"]];
33     request.delegate = self;
34     [request startAsynchronous];

//    request setDidFinishSelector:<#(SEL)#>

35 //    [request setCompletionBlock:^{
36 //
37 //    }];
38     

MKNetworkEngine * engine = [[MKNetworkEngine alloc] initWithHostName:@"127.0.0.1"];

39     MKNetworkOperation * operation = [[MKNetworkOperation alloc] initWithURLString:@"example.com" params:nil httpMethod:@"GET"];

[engine enqueueOperation:operation];

40     [operation addCompletionHandler:^(MKNetworkOperation *completedOperation) {
41         NSLog(@"%@", [completedOperation responseData]);
42     } errorHandler:^(MKNetworkOperation *completedOperation, NSError *error) {
43         NSLog(@"%@", [error localizedDescription]);
44     }];
45
46     // POST
47 }
48
49 - (void)requestFinished:(ASIHTTPRequest *)request {
50     NSLog(@"%@", [request responseString]);
51 }
52
53 #pragma mark - ASIHttpRequestDelegateMethods
54
55 - (void)didReceiveMemoryWarning
56 {
57     [super didReceiveMemoryWarning];
58     // Dispose of any resources that can be recreated.
59 }
60
61 @end

  2.POST

 1 // POST
 2     NSDictionary * parameters = @{@"key": @"value"};
 3     AFHTTPRequestOperationManager * manager_post = [AFHTTPRequestOperationManager manager];
 4     [manager_post POST:@"example.com" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
 5
 6     } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
 7
 8     }];
 9
10     // form post
11     ASIFormDataRequest * request_post = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:@"example.com"]];
12     [request_post setPostValue:@"value" forKey:@"key"];
13     [request_post startAsynchronous];
14     [request_post setCompletionBlock:^{
15         NSLog(@"do what");
16     }];
17
18     MKNetworkOperation * operation_post = [[MKNetworkOperation alloc] initWithURLString:@"example.com" params:parameters httpMethod:@"POST"];

[engine enqueueOperation:operation];

19     [operation_post addCompletionHandler:^(MKNetworkOperation *completedOperation) {
20
21     } errorHandler:^(MKNetworkOperation *completedOperation, NSError *error) {
22
23     }];

  是不是发现了 MK AF 在Block的使用程度上高于ASI,  MK的内聚貌似更好一点。 所以我们推荐MKNetworkKit这个新生儿。 继续往下看 我们开始主要对比AF MK

  3.Download

 1 // Download
 2     AFURLSessionManager * download_manager_af = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
 3     NSURLSessionDownloadTask * task = [download_manager_af downloadTaskWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"example.com"]] progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
 4         NSURL * filepath = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil];
 5         // path
 6         return [filepath URLByAppendingPathComponent:[response suggestedFilename]];
 7     } completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
 8         NSLog(@"%@", filePath);
 9     }];
10     [task resume];
11
12     MKNetworkOperation * download_mk = [[MKNetworkOperation alloc] initWithURLString:@"example.com" params:nil httpMethod:@"GET"];
13     [download_mk addDownloadStream:[NSOutputStream outputStreamToFileAtPath:@"path" append:YES]];
14     [engine enqueueOperation:download_mk];
15
16     [download_mk onDownloadProgressChanged:^(double progress) {
17
18     }];
19
20     [download_mk addCompletionHandler:^(MKNetworkOperation *completedOperation) {
21
22     } errorHandler:^(MKNetworkOperation *completedOperation, NSError *error) {
23
24     }];

  发现MK内聚程度是不是高于AF啊。 而且使用很上手。

  4.Upload

 1 // upload
 2     AFURLSessionManager * upload_af = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
 3     NSURLSessionTask * upload_tast = [upload_af uploadTaskWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"example.com"]] fromFile:[[[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil] URLByAppendingPathComponent:@"fileName"] progress:nil completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {
 4         if (error) {
 5             NSLog(@"%@", [error localizedDescription]);
 6         } else {
 7             NSLog(@"Success");
 8         }
 9     }];
10     [upload_tast resume];
11
12     MKNetworkOperation * upload_mk = [[MKNetworkOperation alloc] initWithURLString:@"example.com" params:[NSDictionary dictionaryWithObject:@"username" forKey:@"username"] httpMethod:@"POST"];
13     [upload_mk addFile:@"filepath" forKey:@"fikekey" mimeType:@"filetype"];
14     [upload_mk setFreezable:YES];
15
16     [engine enqueueOperation:upload_mk];
17     [upload_mk onUploadProgressChanged:^(double progress) {
18
19     }];
20
21     [upload_mk addCompletionHandler:^(MKNetworkOperation *completedOperation) {
22
23     } errorHandler:^(MKNetworkOperation *completedOperation, NSError *error) {
24
25     }];

  

  附言: MKNetworkKit包含许多实用类目, 比如url的编码, 时间获取, 格式转换等, 直接引入就可以使用, 具体操作大家慢慢去发现。

  

时间: 2024-10-06 22:18:07

iOS网络第三方使用方法大全AFNetworking/ASIHTTPRequest/MKNetworkKit的相关文章

iOS collectionView属性和方法大全

整理了一下collectionView: 1.UICollectionViewLayout UICollectionViewLayout可以说是UICollectionView的大脑和中枢,它负责了将各个cell.Supplementary View和Decoration Views进行组织,为它们设定各自的属性,Layout决定了UICollectionView是如何显示在界面上的.在展示之前,一般需要生成合适的UICollectionViewLayout子类对象,并将其赋予Collectio

对比iOS网络组件:AFNetworking VS ASIHTTPRequest

对比iOS网络组件:AFNetworking VS ASIHTTPRequest 在开发iOS应用过程中,如何高效的与服务端API进行数据交换,是一个常见问题.一般开发者都会选择一个第三方的网络组件作为服务,以提高开发效率和稳定性.这些组件把复杂的网络底层操作封装成友好的类和方法,并且加入异常处理等. 那么,大家最常用的组件是什么?这些组件是如何提升开发效率和稳定性的?哪一款组件适合自己,是 AFNetworking(AFN)还是 ASIHTTPRequest(ASI)?几乎每一个iOS互联网应

对比iOS网络组件:AFNetworking VS ASIHTTPRequest(转载)

在开发iOS应用过程中,如何高效的与服务端API进行数据交换,是一个常见问题.一般开发者都会选择一个第三方的网络组件作为服务,以提高开发效率和稳定性.这些组件把复杂的网络底层操作封装成友好的类和方法,并且加入异常处理等. 那么,大家最常用的组件是什么?这些组件是如何提升开发效率和稳定性的?哪一款组件适合自己,是 AFNetworking(AFN)还是 ASIHTTPRequest(ASI)?几乎每一个iOS互联网应用开发者都会面对这样的选择题,要从这两个最常用的组件里选出一个好的还真不是那么容易

iOS网络编程(7) 第三方开源库-----&gt;AFNetworking

AFNetworking是一个为 iOS 和 Mac OSX 制作的令人愉快的网络库,它建立在URL 装载系统框架的顶层,内置在Cocoa里,扩展了强有力的高级网络抽象.它的模块架构被良好的设计,拥有丰富的功能,因此,使用起来,必定赏心悦目. @原文链接https://github.com/AFNetworking/AFNetworking,我在此基础上了点配置修改 @介绍 1.支持HTTP请求和基于REST的网络服务(包括GET.POST. PUT.DELETE等) 2.支持ARC 3.要求i

IOS网络访问之使用AFNetworking

IOS网络访问之使用AFNetworking AFNetworking是IOS上常用的第三方网络访问库,我们可以在github上下载它,同时github上有它详细的使用说明,最新的AFNetworing2.0与1.0有很大的变化,这里仅对2.0常用的使用方法进行总结 基于NSURLConnection的API 提交GET请求 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; [man

IOS网络访问之使用AFNetworking&lt;2&gt;

IOS网络访问之使用AFNetworking AFNetworking是IOS上常用的第三方网络访问库,我们可以在github上下载它,同时github上有它详细的使用说明,最新的AFNetworing2.0与1.0有很大的变化,这里仅对2.0常用的使用方法进行总结 基于NSURLConnection的API 提交GET请求 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; [man

IOS网络编程——第三方类库

IOS网络编程——第三方类库 目录 概述 ASIHttpRequest AFNetworking 其他 概述 ASIHttpRequest AFNetworking 其他

ios网络开发 AFNetworking

一.早前的几个网络框架 1.ASI框架: HTTP终结者.很牛, 但是有BUG, 已经停止更新. 2.MKNetworkKit (印度人写的). 3.AFN一直还在更新. AFNetworking的出现:MAC/iOS设计的一套网络框架.(为了简化网络操作) 地址:https://github.com/AFNetworking/AFNetworking *AFN专注与网络数据传输,以及网络中多线程的处理. 二.AFNetworking的使用 1.AFN特性 : *登录传参数时,传递字典即可.(键

iOS系统网络抓包方法

在进行iOS开发过程中,经常会遇到各种各样的网络访问问题,以前苦于没有抓包工具,很多网络问题解决起来很痛苦.现在终于好了,本文提供两种方式进行网络抓包: 1. 网络共享 + 可视化抓包工具 基本原理 原理比较简单,ios设备通过代理方式共享连接mac电脑的无线网卡,使用抓包工具抓包,然后进行分析(我们推荐使用Wireshark,在MAC系统上也可以使用Paros工具). 现在以MAC系统下Paros工具为例,详细描述下抓包过程: 操作步骤 1)  首先将MAC电脑的以太网共享给airport,使