NSURLRequest封裝了一次網(wǎng)絡(luò)請求所需要的數(shù)據(jù),主要封裝了以下信息:
NSURLRequest與其子類NSMutableURLRequest
NSURLRequest封裝一次網(wǎng)絡(luò)請求的的步驟
//1.創(chuàng)建請求路徑NSString *strURL = [NSString stringWithFormat:@"(此處為URL)/login?username=%@&pwd=%@", @"用戶名", @"密碼"];NSURL *url = [NSURL URLWithString:];//2.根據(jù)請求路徑封裝請求NSURLRequest *request = [NSURLRequest requestWithURL:url];
NSMutableURLRequest封裝一次網(wǎng)絡(luò)請求的的步驟
//1.創(chuàng)建請求路徑NSURL *url = [NSURL URLWithString:@"(此處為URL)/login"];//2.創(chuàng)建請求NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];//3.設(shè)置請求方法request.HTTPMethod = @"POST";//4.設(shè)置請求參數(shù)request.HTTPBody = [@"username="用戶名"&pwd="密碼" dataUsingEncoding:NSUTF8StringEncoding];//5.設(shè)置超時(shí)request.timeoutInterval = 5;
NSURLConnection發(fā)送請求的步驟
NSURLConnection的代理
NSURLConnectionDelegate
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error/***遇到錯(cuò)誤的時(shí)候調(diào)用,請求終止*/
NSURLConnectionDataDelegate
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response/***接收到服務(wù)器響應(yīng)的時(shí)候調(diào)用*response的中包含了服務(wù)器的響應(yīng)信息,比較有價(jià)值是此次請求的數(shù)據(jù)的總長度*/- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data/***接收到服務(wù)器的數(shù)據(jù)的時(shí)候調(diào)用,若數(shù)據(jù)較多會多次調(diào)用*通常在該方法中對服務(wù)器返回的數(shù)據(jù)進(jìn)行存儲*也可以在該方法中計(jì)算下載進(jìn)度*/- (void)connectionDidFinishLoading:(NSURLConnection *)connection/***數(shù)據(jù)加載完畢的時(shí)候調(diào)用*/
NSURLConnectionDownloadDelegate
- (void)connection:(NSURLConnection *)connection didWriteData:(long long)bytesWritten totalBytesWritten:(long long)totalBytesWritten expectedTotalBytes:(long long) expectedTotalBytes/***每次向沙盒中寫文件都會調(diào)用該方法*/- (void)connectionDidResumeDownloading:(NSURLConnection *)connection totalBytesWritten:(long long)totalBytesWritten expectedTotalBytes:(long long) expectedTotalBytes/***該方法是支持?jǐn)帱c(diǎn)下載的核心*/- (void)connectionDidFinishDownloading:(NSURLConnection *)connection destinationURL:(NSURL *) destinationURL/***由于:下載的文件保存在tmp文件夾中,該文件夾中的數(shù)據(jù)會被系統(tǒng)定時(shí)刪除*所以該方法必須實(shí)現(xiàn),用于將改變數(shù)據(jù)的存儲位置*/
NSURLConnection的請求方式
同步請求(線程會被阻塞)
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];/***data:服務(wù)器返回的數(shù)據(jù),即請求的數(shù)據(jù)*request:請求請求對象*response:服務(wù)器的響應(yīng)數(shù)據(jù)*error:錯(cuò)誤信息*/
異步請求
//方法一(block)[NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { /** *請求完成回調(diào)的block,參數(shù)的含義與銅鼓請求相同 */}];//方法二(代理)[NSURLConnection connectionWithRequest:request delegate:self]/***自動發(fā)送請求*/NSURLConnection *connect = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:NO];/***需要手動發(fā)送請求*/
URL中的中文通要進(jìn)行處理,通常使用UTF-8編碼
//進(jìn)行如下轉(zhuǎn)碼[urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]
新聞熱點(diǎn)
疑難解答
圖片精選