下载AFNetworking资源包 https://github.com/AFNetworking/AFNetworking。
将AFNetworking文件夹导入到需要使用的项目中
在需要使用的地方加入 #import "AFNetworking.h" (已经将AFNetworking文件夹中所有类都导入到了该类中)
注:在AFNetworking中使用了arc,如果你使用的环境是arc,但代码不需要使用arc时需加"-fno-objc-arc",在不使用arc的环境中使用 AFNetworking中则加入"-fobjc-arc"
实例
导入了AFNetworking文件夹,环境是arc,在.m类中加入了#import "AFNetworking.h"(因为我只使用一个类,当使用多个类时,且需要多次导入时,可以在.pch文件中插入#import "AFNetworking.h" )
GET请求
1.获取一个需要请求数据的NSString格式的url
2.设置请求数据类型(AFHTTPRequestSerializer)
3.创建一个请求体 (调用了AFURLRequestSerialization类的方法)
4.创建AFHTTPRequestOperation并发起请求
5.判断是否请求成功,如果成功则调用成功block块,失败则调用(failure block)块 (此方法在AFHTTPRequestOperation类中)
6.创建一个队列,将AFHTTPRequestOperation加入队列中
// 1
NSString *urlStr = @"http://www.baidu.com";
// 2
AFHTTPRequestSerializer *serialize = [AFHTTPRequestSerializer serializer];
// 3
NSMutableURLRequest *urlRequest = [serialize requestWithMethod:@"GET" URLString:urlStr parameters:nil error:nil];
// 4
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:urlRequest];
// 5
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"成功:%@",responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"失败:%@",error);
}];
//6
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[queue addOperation:operation];
POST请求
1.获取一个需要请求数据的NSString格式的url 和 url的参数(key和value)
2.设置请求数据类型(AFHTTPRequestSerializer)
3.创建一个请求体 (调用了AFURLRequestSerialization类的方法)
4.创建AFHTTPRequestOperation并发起请求
5.判断是否请求成功,如果成功则调用成功block块,失败则调用(failure block)块 (此方法在AFHTTPRequestOperation类中)
6.创建一个队列,将AFHTTPRequestOperation加入队列中
// 1
NSString *pathStr = @"http://api.hudong.com/iphonexml.do";
NSDictionary *params =@{@"type":@"focus-c"};
// 2
AFHTTPRequestSerializer *requestSerializer = [AFHTTPRequestSerializer serializer];
// 3
NSMutableURLRequest *urlrequset = [ requestSerializer requestWithMethod:@"POST" URLString:pathStr parameters:params error:nil];
// 4
AFHTTPRequestOperation *requestOperation = [[AFHTTPRequestOperation alloc] initWithRequest:urlrequset];
// 5
[requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"成功:%@",responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"失败:%@",error);
}];
// 6
NSOperationQueue *queue = [ [NSOperationQueue alloc] init];
[queue addOperation:requestOperation];
从两种代码中可以看出GET请求时不需要URL参数,而POST请求时需要URL的参数
GET请求与POST请求的区别
1.请求时,POST请求需要带参数,而GET请求不需要
2.GET是从服务器获取数据,而POST则是向服务器传送数据
3.GET传送数据量较小,只有2kb,而POST传送数据量则没有限制
4.GET安全性低,POST安全性高(GET请求时帐号和密码在URL中,可以被截取,而POST的帐号和密码则被封装到了字典中,不容易被截取)