iOS網絡通信AFNetworking框架

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

網絡獲取的數據如下圖



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章