程序的實現需要借助幾個對象:
NSURLRequest:建立了一個請求,可以指定緩存策略、超時時間。和NSURLRequest對應的還有一個NSMutableURLRequest,如果請求定義為NSMutableURLRequest則可以指定請求方法(GET或POST)等信息。
NSURLConnection:用於發送請求,可以指定請求和代理。當前調用NSURLConnection的start方法後開始發送異步請求。
Get和POST都是不行的,正確的做法是這樣的:
要分段下載,每次請求下載的范圍,服務根據范圍響應這部分的數據,對於文件大小信息如何獲取呢?采用HEAD請求拿到。
NSURLConnection的改良對象。
使用AFNetworking框架檢測,發送一個URL然後去檢測網絡狀態變化,網絡改變後則調用相應的網絡狀態改變方法。
#pragma mark 網絡狀態監測-(**void**)checkNetworkStatus{
//創建一個用於測試的url
NSURL *url=[NSURL URLWithString:@http://www.apple.com];
AFHTTPRequestOperationManager *operationManager=[[AFHTTPRequestOperationManager alloc]initWithBaseURL:url];
//根據不同的網絡狀態改變去做相應處理
[operationManager.reachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
**switch** (status) {
**case** AFNetworkReachabilityStatusReachableViaWWAN:
[**self** alert:@2G/3G/4G Connection.];
**break**;
**case** AFNetworkReachabilityStatusReachableViaWiFi:
[**self** alert:@WiFi Connection.];
**break**;
**case** AFNetworkReachabilityStatusNotReachable:
[**self** alert:@Network not found.];
**break**;
**default**:
[**self** alert:@Unknown.];
**break**;
}
}];
//開始監控
[operationManager.reachabilityManager startMonitoring];}