首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

iOS AFNetworking 3.0 放棄 NSURLConnection,改用 NSURLSession 實現 Stream 請求

     編輯:程式設計綜合問答

背景

AFNetworking 3.0 移除所有 NSURLConnection 相關類,僅保留基於 NSURLSession 的實現。若項目需將字典轉 NSData 再轉 NSInputStream 發送,需遷移到 Session 架構。

推薦方案:直接使用 NSURLSession

NSURLSession *session = [NSURLSession sharedSession];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
request.HTTPMethod = @"POST";
request.HTTPBody = jsonData; // 或設置 HTTPBodyStream

NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
    // 處理響應
}];
[task resume];

若必須用 Stream(大文件上傳)

NSInputStream *stream = [NSInputStream inputStreamWithData:jsonData];
request.HTTPBodyStream = stream;
// 設置 Content-Length 等頭部
NSURLSessionUploadTask *uploadTask = [session uploadTaskWithStreamedRequest:request];
[uploadTask resume];

遷移提示

  • AFN 3.x 的 AFHTTPSessionManager 封裝了 Session,建議直接使用其 POST / PUT 方法,自動處理序列化與響應解析。
  • 舊代碼中 AFHTTPRequestOperation、AFHTTPRequestOperationManager 均已棄用。

總結

拥抱 NSURLSession,放棄手寫 Stream 請求,利用 AFN 3.x 高級封裝提升開發效率與穩定性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved