iOS網絡請求中常見的幾種方式 – iPhone手機開發 iPhone軟體開發教學課程

iOS網絡請求中常見的幾種方式。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:@"https://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:@"https://localhost:8080/MyWeb/Book"];
    //創建請求
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];
    
    [request setHTTPMethod:@"POST"];//設置請求方式為POST,默認為GET
    
    NSString *param= @"Name=博客園&Address=https://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);

發佈留言