iOS開發——網路編程OC篇&資料請求總結

來源:互聯網
上載者:User

標籤:

資料請求總結

 

 

  1 //**************************************GET  2 //同步  3 /*  4 //第一步,建立URL  5 NSURL * url = [[NSURL alloc]initWithString:@"http://e.hiphotos.baidu.com/image/w%3D1366%3Bcrop%3D0%2C0%2C1366%2C768/sign=66f9b9980ef431adbcd2473a7d0097cc/08f790529822720ed8bdbef079cb0a46f21fab4d.jpg"];  6 //第二步,通過URL建立request請求  7 NSURLRequest * request = [[NSURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:15];  8 //NSURLRequest初始化方法第一個參數:請求訪問路徑,第二個參數:緩衝協議,第三個參數:網路請求逾時時間(秒)  9  10 //  其中緩衝協議是個枚舉類型包含: 11 // 12 //  NSURLRequestUseProtocolCachePolicy(基礎策略) 13 // 14 //  NSURLRequestReloadIgnoringLocalCacheData(忽略本機快取) 15 // 16 //  NSURLRequestReturnCacheDataElseLoad(首先使用緩衝,如果沒有本機快取,才從原地址下載) 17 // 18 //  NSURLRequestReturnCacheDataDontLoad(使用本機快取,從不下載,如果本地沒有緩衝,則請求失敗,此策略多用於離線操作) 19 // 20 //  NSURLRequestReloadIgnoringLocalAndRemoteCacheData(無視任何緩衝策略,無論是本地的還是遠端,總是從原地址重新下載) 21 // 22 //  NSURLRequestReloadRevalidatingCacheData(如果本機快取是有效則不下載,其他任何情況都從原地址重新下載) 23 //第三步,串連伺服器 24 NSURLResponse * respones = nil; 25 NSError * error = nil; 26 NSData * reviced = [NSURLConnection sendSynchronousRequest:request returningResponse:&respones  error:&error]; 27 //第四步,將資料轉換成圖片 28 UIImage * image = [[UIImage alloc]initWithData:reviced]; 29 _imageView.image = image; 30 */ 31  32 //非同步 33 /** 34 //第一步,建立URL 35 NSURL * url = [[NSURL alloc]initWithString:@"http://e.hiphotos.baidu.com/image/w%3D1366%3Bcrop%3D0%2C0%2C1366%2C768/sign=66f9b9980ef431adbcd2473a7d0097cc/08f790529822720ed8bdbef079cb0a46f21fab4d.jpg"]; 36 //第二步,通過URL建立request請求 37 NSURLRequest * request = [[NSURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:15]; 38 //第三步,串連伺服器 39 [NSURLConnection connectionWithRequest:request delegate:self];//(需要在.h中指定代理方法) 40 //接受到伺服器的回應調用 41 - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 42 { 43     [self.reviceData setLength:0 ]; 44      45 } 46 //資料轉送中一直調用 47 - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 48 { 49     [self.reviceData appendData:data]; 50      51 } 52 //資料轉送完才會調用 53 - (void)connectionDidFinishLoading:(NSURLConnection *)connection 54 { 55     UIImage * image = [[UIImage alloc]initWithData:self.reviceData]; 56     _imageView.image = image; 57      58 } 59 */ 60  61  62 //**************************************POST 63 //同步 64 /** 65  //第一步,建立URL 66  NSURL * url = [[NSURL alloc]initWithString:@"http://api.hudong.com/iphonexml.do"]; 67  //第二步,通過URL建立可變的request請求(只有建立可變的request才能設定POST請求) 68  NSMutableURLRequest * request1 = [[NSMutableURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:100]; 69  //timeoutInterval:post逾時最大時間是240秒,在方法中設定多少秒也沒用。 70   71  //第三步,設定POST請求方式 72  [request1 setHTTPMethod:@"POST"]; 73  //第四步,設定參數 74  NSString * bodyStr = @"type=focus-c"; 75  NSData * body = [bodyStr dataUsingEncoding:NSUTF8StringEncoding]; 76  [request1 setHTTPBody:body]; 77  //第五步,串連伺服器 78  NSData * data = [NSURLConnection sendSynchronousRequest:request1 returningResponse:nil error:nil]; 79  NSString * str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; 80  NSLog(@"%@",str); 81  */ 82  83  84 //非同步 85 /** 86  //第一步,建立URL 87  NSURL * url = [[NSURL alloc]initWithString:@"http://api.hudong.com/iphonexml.do"]; 88  //第二步,通過URL建立可變的request請求(只有建立可變的request才能設定POST請求) 89  NSMutableURLRequest * request1 = [[NSMutableURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:100]; 90  //timeoutInterval:post逾時最大時間是240秒,在方法中設定多少秒也沒用。 91   92  //第三步,設定POST請求方式 93  [request1 setHTTPMethod:@"POST"]; 94  //第四步,設定參數 95  NSString * bodyStr = @"type=focus-c"; 96  NSData * body = [bodyStr dataUsingEncoding:NSUTF8StringEncoding]; 97  [request1 setHTTPBody:body]; 98  //第五步,串連伺服器 99  [[NSURLConnection alloc]initWithRequest:request2 delegate:self]100  101  //接受到伺服器的回應調用102  - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response103  {104  [self.reviceData setLength:0 ];105  106  }107  //資料轉送中一直調用108  - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data109  {110  [self.reviceData appendData:data];111  112  }113  //資料轉送完才會調用114  - (void)connectionDidFinishLoading:(NSURLConnection *)connection115  {116  NSString * str = [[NSString alloc]initWithData:self.reviceData encoding:NSUTF8StringEncoding];117  NSLog(@"%@",str);118  }119  */120 121 122 //委託方法123 /*124  一般用到四個委託方法:125  126  //接受到respone,這裡麵包含了HTTP請求狀態代碼和資料頭資訊,包括資料長度、編碼格式等127  -(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{ NSLog(@"response = %@",response); _backData = [[NSMutableData alloc]init];128  }129  130  //接受到資料時調用,完整的資料可能拆分為多個包發送,每次接受到資料片段都會調用這個方法,所以需要一個全域的NSData對象,用來把每次的資料拼接在一起131  -(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{132  [_backData appendData:data];133  }134  135  //資料接受結束時調用這個方法,這時的資料就是獲得的完整資料了,可以使用資料做之後的處理了136  -(void)connectionDidFinishLoading:(NSURLConnection *)connection{137  NSLog(@"%@",[[NSString alloc]initWithData:_backData encoding:NSUTF8StringEncoding]);138  }139  140  //這是請求出錯是調用,錯誤處理不可忽視141  -(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{142  if (error.code == NSURLErrorTimedOut) {143  NSLog(@"請求逾時");144  }145  NSLog(@"%@",[error localizedDescription]);146  }147 148  */

 

 

iOS開發——網路編程OC篇&資料請求總結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.