NSURLSession(一)GET請求,nsurlsessionget

來源:互聯網
上載者:User

NSURLSession(一)GET請求,nsurlsessionget
 //GET請求, 也可以給伺服器發送資訊, 也有參數(微博使用者名稱,使用者id)
    //1.構造URL, 參數直接拼接在url串連後
    NSURL *url = [NSURL URLWithString:@"http://news-at.zhihu.com/api/3/news/4602734"];
    
    //2.構造Request
    //把get請求的要求標頭儲存在request裡
    //NSURLRequest *request = [NSURLRequest requestWithURL:url];
    
    // 參數
    // (1)url
    // (2)緩衝策略
    // (3)逾時的時間, 經過120秒之後就放棄這次請求
    //NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:120];
    //NSURLRequest 不可變,不能動態添加要求標頭資訊

    //可變的對象
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    
    //(1)佈建要求方式
    [request setHTTPMethod:@"GET"];
    
    //(2)逾時時間
    [request setTimeoutInterval:120];
    
    //(3)緩衝策略
    [request setCachePolicy:NSURLRequestReturnCacheDataElseLoad];
    
    //(4)佈建要求頭其他內容
    //[request setValue:<#(NSString *)#> forHTTPHeaderField:<#(NSString *)#>];
    //[request addValue:<#(NSString *)#> forHTTPHeaderField:<#(NSString *)#>];
    //[request setAllHTTPHeaderFields:<#(NSDictionary *)#>];
    
    [request setValue:@"gzip" forHTTPHeaderField:@"Accept-Encoding"];   //告訴服務,返回的資料需要壓縮
    
    
    //3.構造Session
    NSURLSession *session = [NSURLSession sharedSession];

    //4.構造要執行的任務task
    /**
     *  task
     *
     *  @param data     返回的資料
     *  @param response 回應標頭
     *  @param error    錯誤資訊
     *
     */
    NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
        
        if (error == nil) {
            /*
             NSString *dataStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
             NSLog(@"data: %@", dataStr);
             */
            
            //json --> data
            //NSJSONSerialization *jsonData = [NSJSONSerialization dataWithJSONObject:<#(id)#> options:<#(NSJSONWritingOptions)#> error:<#(NSError *__autoreleasing *)#>]
            /*
             options:
             1.讀取reading
             NSJSONReadingMutableContainers     產生可變的對象,不設定這個option,預設是建立不可變對象
             NSJSONReadingMutableLeaves     產生可變的字串MutableString(iOS7+有bug)
             NSJSONReadingAllowFragments    允許json資料最外層不是字典或者數組
             2.寫入writing
             NSJSONWritingPrettyPrinted     產生json資料是格式化的,有換行,可讀性高
             */
            //data --> json
            NSString *dataStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
            NSLog(@"data: %@", dataStr);
        }
    }];
    
    //5.
    [task resume];


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.