iOS網路請求基礎,ios網路請求

來源:互聯網
上載者:User

iOS網路請求基礎,ios網路請求

  這篇是關於網路請求的,結合公司的實際情況編寫,如果有不同意見歡迎留言共同討論。

  iOS在9.0之後徹底放棄了NSURLConnection,現在已經改用了NSURLSession進行網路請求。一般現在網路請求也都是使用AFNetworking。下面就把我自己關於afn和系統的api使用寫下來。

  一.使用NSURLSession

  移動端的網路請求主要是get請求和post請求, get和post請求步驟差不多,只不過post對於資訊的傳送更安全,post請求會設定body而且會對body進行加密,保證傳輸的資訊安全。

      NSString *urlString = BASE_PERSONAL_URL; // 佈建要求網址
    NSURL *url = [NSURL URLWithString:urlString];
      NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; // 建立請求

    // 參數拼接
      NSDictionary *bodyDic = @{@"password": md5Password, @"os": @"2", @"version": strSysVersion, @"models": phoneModel};
      NSArray *body = @[bodyDic];
      NSDictionary *parameter = @{@"head":head, @"body":body};
      request.HTTPMethod = @"Post"; // 佈建要求方式
        [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; // 佈建要求頭,傳回型別
        NSLog(@"parameter ==== %@", parameter);
        
        NSData *data = [NSJSONSerialization dataWithJSONObject:parameter options:NSJSONWritingPrettyPrinted error:nil];
        // 因為需要對body體進行加密所以先把data轉化成字串,如果不加密可略過次步
        NSString *bodyString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        NSData *bodyData = [[Base getHTTPBodyString:bodyString] dataUsingEncoding:NSUTF8StringEncoding]; // 對body體進行加密
    request.HTTPBody = bodyData; // 設定body體
    // 進行網路請求
    NSURLSession *session = [NSURLSession sharedSession];
    NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        if (!error) {
            
            // 因為回傳的資訊也進行了加密所以也需要對返回的資料進行解密
            // 將data資料轉化成字串進行解密
            NSString *responseString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
            NSString *resault = [Base getHttpString:responseString];
            // 將解密後的字串轉成data
            NSData *resaultData = [resault dataUsingEncoding:NSUTF8StringEncoding];
            // 使用json解析
            NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:resaultData options:NSJSONReadingMutableLeaves error:nil];
      
        } else {
            NSLog(@"%@", error);
        }
    }];

  // 網路請求開始
    [dataTask resume];

 請求方面基本是這樣的,至於加密的方式是公司內部協商確定的

 二 使用AFN

      AFHTTPSessionManager *sessionManager = [AFHTTPSessionManager manager];
    sessionManager.requestSerializer = [AFJSONRequestSerializer serializer];
    sessionManager.responseSerializer = [AFJSONResponseSerializer serializer];
    
    [sessionManager POST:urlString parameters:parameter progress:^(NSProgress * _Nonnull uploadProgress) {
    
    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        
        
        NSLog(@"response === %@", responseObject);

        
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSLog(@"data ====---0=-=0=0-=0=0-=0= %@", error);

    }];
    一般公司會根據實際情況對afn進行二次封裝,而不會直接調用afn的介面,比如說加密等
 

 

相關文章

聯繫我們

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