你好,歡迎來到IOS教程網

 Ios教程網 >> IOS訊息 >> 關於IOS >> iOS網絡NSURLRequest與NSURLConnection

iOS網絡NSURLRequest與NSURLConnection

編輯:關於IOS
NSURLRequest

NSURLRequest封裝了一次網絡請求所需要的數據,主要封裝了以下信息: 
請求路徑(URL)
請求方法(GET或POST)
請求頭
請求體
超時參數
NSURLRequest與其子類NSMutableURLRequest 
NSURLRequest的所有的請求信息拼接在請求路徑(URL)的後面
NSMutableURLRequest的請求路徑與其他的請求信息分開,其他請求信息通過對應的Key對請求對象進行設置
NSURLRequest通常用於GET請求
NSMutableURLRequest通常用於POST請求
NSURLRequest封裝一次網絡請求的的步驟

//1.創建請求路徑
NSString *strURL = [NSString stringWithFormat:@"(此處為URL)/login?username=%@&pwd=%@", @"用戶名", @"密碼"];
NSURL *url = [NSURL URLWithString:];
//2.根據請求路徑封裝請求
NSURLRequest *request = [NSURLRequest requestWithURL:url];
NSMutableURLRequest封裝一次網絡請求的的步驟

//1.創建請求路徑
NSURL *url = [NSURL URLWithString:@"(此處為URL)/login"];
//2.創建請求
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
//3.設置請求方法
request.HTTPMethod = @"POST";
//4.設置請求參數
request.HTTPBody = [@"username="用戶名"&pwd="密碼" dataUsingEncoding:NSUTF8StringEncoding];
//5.設置超時
request.timeoutInterval = 5;
NSURLConnection

NSURLConnection發送請求的步驟 
創建請求路徑(NSURL)
將請求路徑封裝成請求對象(NSURLRequest),設置其他請求參數
使用NSURLConnection發送同步/異步請求
NSURLConnection的代理

NSURLConnectionDelegate
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
/**
*遇到錯誤的時候調用,請求終止
*/
NSURLConnectionDataDelegate
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
/**
*接收到服務器響應的時候調用
*response的中包含了服務器的響應信息,比較有價值是此次請求的數據的總長度
*/
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
/**
*接收到服務器的數據的時候調用,若數據較多會多次調用
*通常在該方法中對服務器返回的數據進行存儲
*也可以在該方法中計算下載進度
*/
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
/**
*數據加載完畢的時候調用
*/
NSURLConnectionDownloadDelegate
- (void)connection:(NSURLConnection *)connection didWriteData:(long long)bytesWritten totalBytesWritten:(long long)totalBytesWritten expectedTotalBytes:(long long) expectedTotalBytes
/**
*每次向沙盒中寫文件都會調用該方法
*/
- (void)connectionDidResumeDownloading:(NSURLConnection *)connection totalBytesWritten:(long long)totalBytesWritten expectedTotalBytes:(long long) expectedTotalBytes
/**
*該方法是支持斷點下載的核心
*/
- (void)connectionDidFinishDownloading:(NSURLConnection *)connection destinationURL:(NSURL *) destinationURL
/**
*由於:下載的文件保存在tmp文件夾中,該文件夾中的數據會被系統定時刪除
*所以該方法必須實現,用於將改變數據的存儲位置
*/
NSURLConnection的請求方式

同步請求(線程會被阻塞)
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
/**
*data:服務器返回的數據,即請求的數據
*request:請求請求對象
*response:服務器的響應數據
*error:錯誤信息
*/
異步請求
//方法一(block)
[NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
    /**
    *請求完成回調的block,參數的含義與銅鼓請求相同
    */
}];
//方法二(代理)
[NSURLConnection connectionWithRequest:request delegate:self]
/**
*自動發送請求
*/
NSURLConnection *connect = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:NO];
/**
*需要手動發送請求
*/
URL中的中文處理

URL中的中文通要進行處理,通常使用UTF-8編碼

//進行如下轉碼
[urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved