Session使用

  • 1.同步請求,一旦發(fā)送請求,程序禁止用戶交互,直到服務(wù)器返回?cái)?shù)據(jù)完成,才能進(jìn)行下一步操作
    • 2.異步請求不會阻塞主線程,而回建立一個新的線程來操作,用戶發(fā)出請求以后,可以繼續(xù)對UI操作,程序可以繼續(xù)運(yùn)行
    • 3.GET請求,將參數(shù)直接寫在訪問路徑上。操作簡單,但是容易被外界看到,安全性不高。
    • 4.POST請求,將參數(shù)放到body里面,POST操作相對復(fù)雜,需要將參數(shù)和地址分開,相對更加安全.

GET請求

    NSString *urlString = KgetUrl;
    NSURL *url = [NSURL URLWithString:urlString];
    //創(chuàng)建請求體
    NSURLRequest *request = [NSURLRequest  requestWithURL:url];
    
    //創(chuàng)建一個session對象
    NSURLSession *session = [NSURLSession sharedSession];
    
    //創(chuàng)建請求任務(wù)
    NSURLSessionTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        
        NSString *result = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
        
        NSLog(@"GTE:%@",result);
    }];
    //注意不能忘了這一步
    [task resume];

POST請求

 NSString *urlString = KpostUrl;
    NSURL *url = [NSURL URLWithString:urlString];
    //創(chuàng)建請求體,注意是 NSMutableURLRequest
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    //設(shè)置為POST請求
    [request setHTTPMethod:@"POST"];
    
    NSString *postString = KparameterUrl;
    
    NSData *data = [postString dataUsingEncoding:NSUTF8StringEncoding];
    //添加參數(shù)
    [request setHTTPBody:data];
    
    //創(chuàng)建session對象
    NSURLSession *session = [NSURLSession sharedSession];
    
    //創(chuàng)建一個請求任務(wù)
    NSURLSessionTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        NSString *result = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
        NSLog(@"POST%@",result);
    }];
    
    [task resume];

代理


- (IBAction)delegateAction:(UIButton *)sender {
    
    //遵循代理 <NSURLSessionDataDelegate>
         //
    NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[NSOperationQueue mainQueue]];
    //新建任務(wù)
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:KgetUrl] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];
    //創(chuàng)建請求
    NSURLSessionDataTask *task = [session dataTaskWithRequest:request];
    
    [task resume];
    
}

- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveResponse:(NSURLResponse *)response completionHandler:(void (^)(NSURLSessionResponseDisposition))completionHandler{
    
    //當(dāng)網(wǎng)絡(luò)基于HTTP協(xié)議時,response是NSHTTPURLResponse類型的
//    NSHTTPURLResponse *URLResponse = (NSHTTPURLResponse *)response;
//    long long length = URLResponse.expectedContentLength;
//    NSLog(@"%ld",URLResponse.statusCode);
//    NSLog(@"%lld",length);
    
    //允許服務(wù)器回傳數(shù)據(jù)
    completionHandler(NSURLSessionResponseAllow);
}

//接受服務(wù)器傳回來的數(shù)據(jù),可能執(zhí)行多次
-  (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data{
    
 
    NSString *string=[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
    if (string) {
        [self.astring appendString:string];

    }
        NSLog(@"%@",self.astring);


}

//接受或者失敗時調(diào)用
- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error{
    NSLog(@"%@******",error);
    
}
123.gif
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,564評論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,045評論 25 709
  • 昨天和朋友無意間聊起曾經(jīng)喜歡過的明星,因?yàn)槲覀冏哉J(rèn)為和追星族差太多,頂多算上不是黑粉,看到那些瘋狂的行徑,熾熱的追...
    長弓心悅閱讀 272評論 3 1
  • 藥起啥名呢閱讀 201評論 0 3
  • 22天,看似那么短暫,卻讓我養(yǎng)成了許多好習(xí)慣,受益匪淺。22天,看似那么漫長,我卻還有更遠(yuǎn)的路要走下去。 早起的習(xí)...
    空之境婉容閱讀 335評論 2 4

友情鏈接更多精彩內(nèi)容