AFNetworking
是對NSURLConnection
NSURLSession
的一層封裝
雖然運行效率沒有ASIHttpRequest
高,但是使用比它簡單
在iOS開發中,使用廣泛
github地址 https://github.com/pokeb/AFNetworking/AFNetworking
AFN的版本選擇
1-AFNetworking對應版本選擇.png
1.AFHTTPSessionManager 發送http請求 處理http響應
是AFN中最重要的對象之一
封裝了HTTP請求的常見處理
GET\POST請求
解析服務器的響應數據
AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];
GET請求
- (NSURLSessionDataTask *)GET:(NSString *)URLString
parameters:(id)parameters
success:(void (^)(NSURLSessionDataTask *task, id responseObject))success
failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure
POST請求
- (NSURLSessionDataTask *)POST:(NSString *)URLString
parameters:(id)parameters
success:(void (^)(NSURLSessionDataTask *task, id responseObject))success
failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure
文件上傳
- (NSURLSessionDataTask *)POST:(NSString *)URLString
parameters:(id)parameters
constructingBodyWithBlock:(void (^)(id <AFMultipartFormData> formData))block
success:(void (^)(NSURLSessionDataTask *task, id responseObject))success
failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure
2.AFNetworkReachabilityManager 監控聯網狀態
AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];
[manager startMonitoring];
[manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
NSLog(@"%d", status);
}];
提示:要監控網絡連接狀態,必須要先調用單例的startMonitoring方法
3.蘋果官方Reachability 監控聯網狀態
在網絡應用中,需要對用戶設備的網絡狀態進行實時監控,目的是
讓用戶了解自己的網絡狀態,防止一些誤會(比如怪應用無能)
根據用戶的網絡狀態進行智能處理,節省用戶流量,提高用戶體驗
WIFI\3G網絡:自動下載高清圖片
低速網絡:只下載縮略圖
沒有網絡:只顯示離線的緩存數據
蘋果官方提供了一個叫Reachability
的示例程序,便于開發者檢測網絡狀態
https://developer.apple.com/library/ios/samplecode/Reachability/Reachability.zip
Reachability的使用:
1>添加框架SystemConfiguration.framework
2>添加源代碼Reachability.h
Reachability.m
3>包含頭文件 #import "Reachability.h"
常見用法
// 是否WIFI
+ (BOOL) IsEnableWIFI {
return ([[Reachability reachabilityForLocalWiFi] currentReachabilityStatus] != NotReachable);
}
// 是否3G
+ (BOOL) IsEnable3G {
return ([[Reachability reachabilityForInternetConnection] currentReachabilityStatus] != NotReachable);
}
// 網絡狀態監控
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(reachabilityChanged:)
name:kReachabilityChangedNotification
object:nil];
self.netReachability = [Reachability reachabilityForInternetConnection];
[self.netReachability startNotifier];
- (void)dealloc{
[self.netReachability stopNotifier];
[[NSNotificationCenter defaultCenter] removeObserver:self name:kReachabilityChangedNotification object:nil];
}
4.AFNetworking架構圖
2-AFNetworking架構圖.png