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
網絡獲取的數據如下圖