1.在学网络编程前,先掌握几个基本概念
1.1客户端(Client):移动应用(iOS、android等应用)
1.2服务器(Server):为客户端提供服务、提供数据、提供资源的机器
1.3请求(Request):客户端向服务端索取数据的一种行为
1.4响应(Response):服务器对客户端的请求做出的反应,一般指返回数据给客户端
2.在iOS中,常见的发送HTTP请求的方案
2.1苹果自带
1)NSURLConnection【用法简单】
2)NSURLSession【iOS7新出的技术】
3)CFNetwork【NSURL*的底层,纯C语言】
2.2第三方框架
1)AFIHttpRequest【功能强大,可惜停止更新了】
2)AFNetworking【简单易用,维护和使用者多,推荐使用】
3)MKNetworkKit【产自印度,维护和使用者少】
3.正式开始讲解AFN框架
#import "ViewController.h"
#import "AFNetworking.h"
#define INTERNET_TIMEOUT 10;
@interface ViewController ()
@property (nonatomic, strong) AFHTTPRequestOperationManager *operationManager;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//实例化一个请求管理器
self.operationManager = [AFHTTPRequestOperationManager manager];
//设置网络请求超时时间
self.operationManager.requestSerializer.timeoutInterval = INTERNET_TIMEOUT;
//设置响应的数据格式
self.operationManager.responseSerializer = [AFJSONResponseSerializer serializer];
//设置响应可接受内容类型[可以在源码里面修改,达到一劳永逸的效果,本人不喜欢这么做就是了]
self.operationManager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/html", @"application/json", @"text/javascript", @"text/plain", nil];
//get请求
NSString *url = @"http://apis.baidu.com/txapi/weixin/wxhot?";//请求地址
NSDictionary *parameters = @{@"num":@"1", @"rand":@"1", @"word":@"盗墓笔记", @"page":@"1"};//请求参数
[self.operationManager.requestSerializer setValue:@"自己的apikey" forHTTPHeaderField:@"apikey"];//设置请求头【这里是调用了微信热门精选的API,apikey自己去注册即可获得】
[self.operationManager GET:url parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"%@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"%@", error);
}];
//post请求
/*[self.operationManager POST:url parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"%@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"%@", error);
}];*/ //方法是这个,自行测试
}
@end
网络获取的数据如下图