iOS網路請求中常見的幾種方式
阿新 • • 發佈:2019-02-17
POST與GET區別,以及POST與GET同步非同步的使用
①.GET一般用於獲取/查詢資源資訊,而POST一般用於更新資源資訊。②.從上面的http請求中就能看出,GET提交是將請求的資料附加到URL之後,用?分割、引數用&連線。並且字串已經被加密。而post的提交是放到了http包中。從這點看來GET請求的位址列會改變,RUL附加上了請求的資料,而POST位址列不會改變,UTL沒有變化。更加深一層看GET的安全性不高,很容易暴露資訊。③.另外雖然http協議沒有對傳輸資料大小進行限制也沒有對url長度進行限制,但是實際情況中瀏覽器對url進行限制,這樣GET的傳輸資料大小隨著URL長度被限制而受到限制。反觀POST由於不是通過URL傳值,所以沒有限制。
同步請求和非同步請求的區別和聯絡:
1.使用同步連結,當同步連線請求資料時,當資料還未請求成功之前,使用者介面做任何操作都是無效的,都是不會響應的。只有當請求資料完畢之後,才會響應使用者互動,所以通常會卡死主執行緒
2.非同步連線:當非同步請求時,會有單獨的子執行緒去請求資料,而主執行緒依然響應處理使用者互動,所以此時使用者互動得到處理,使用者流暢操作,使用者體驗比較好,所以開發過程中最多的還是非同步連結。
get請求的程式碼如下:
//設定URL路徑 NSString *urlStr=[NSString stringWithFormat:@"http://localhost:8080/MyWeb/Book?username=%@&password=%@&type=get",@"歐燕鬆",@"keso"]; urlStr=[urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSURL *url=[NSURL URLWithString:urlStr]; //通過URL設定網路請求 NSURLRequest *request = [[NSURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10]; NSError *error=nil; //獲取伺服器資料 NSData *requestData= [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&error]; if (error) { NSLog(@"錯誤資訊:%@",[error localizedDescription]); }else{ NSString *result=[[NSString alloc]initWithData:requestData encoding:NSUTF8StringEncoding]; NSLog(@"返回結果:%@",result); }
post請求方式程式碼如下:
//設定URL NSURL *url=[NSURL URLWithString:@"http://localhost:8080/MyWeb/Book"]; //建立請求 NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10]; [request setHTTPMethod:@"POST"];//設定請求方式為POST,預設為GET NSString *param= @"Name=部落格園&Address=http://www.cnblogs.com/xiaofeixiang&Type=post";//設定引數 NSData *data = [param dataUsingEncoding:NSUTF8StringEncoding]; [request setHTTPBody:data]; //連線伺服器 NSData *received = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; NSString *result= [[NSString alloc]initWithData:received encoding:NSUTF8StringEncoding]; NSLog(@"%@",result);