oc 网络
 使用 NSURLSession 进行网络请求
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *task = [session dataTaskWithURL:[NSURL URLWithString:@"http://www.baidu.com"] completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
    NSLog(@"data: %@", [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
}];
[task resume];
 使用 NSURLConnection 进行网络请求
NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
[connection start];
 使用 AFNetworking 进行网络请求
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager GET:@"http://www.baidu.com" parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
    NSLog(@"responseObject: %@", responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
    NSLog(@"error: %@", error);
}];
 使用 AFNetworking 进行文件上传
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager POST:@"http://www.baidu.com" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {
    [formData appendPartWithFileData:[@"hello" dataUsingEncoding:NSUTF8StringEncoding] name:@"file" fileName:@"file.txt" mimeType:@"text/plain"];
} progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
    NSLog(@"responseObject: %@", responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
    NSLog(@"error: %@", error);
}];
 封装网络请求
@interface NetworkManager : NSObject
+ (instancetype)sharedManager;
- (void)GET:(NSString *)urlString parameters:(NSDictionary *)parameters success:(void (^)(NSURLSessionDataTask *task, id responseObject))success failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure;
- (void)POST:(NSString *)urlString parameters:(NSDictionary *)parameters success:(void (^)(NSURLSessionDataTask *task, id responseObject))success failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure;
@end
@implementation NetworkManager
+ (instancetype)sharedManager {
    static NetworkManager *manager = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        manager = [[NetworkManager alloc] init];
    });
    return manager;
}
- (void)GET:(NSString *)urlString parameters:(NSDictionary *)parameters success:(void (^)(NSURLSessionDataTask *task, id responseObject))success failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure {
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    [manager GET:urlString parameters:parameters progress:nil success:success failure:failure];
}
- (void)POST:(NSString *)urlString parameters:(NSDictionary *)parameters success:(void (^)(NSURLSessionDataTask *task, id responseObject))success failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure {
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    [manager POST:urlString parameters:parameters progress:nil success:success failure:failure];
}
@end
 swift 网络
 使用 URLSession 进行网络请求
let session = URLSession.shared
let task = session.dataTask(with: URL(string: "http://www.baidu.com")!) { (data, response, error) in
    print("data: \(String(data: data!, encoding: .utf8)!)")
}
task.resume()
 使用 Alamofire 进行网络请求
Alamofire.request("http://www.baidu.com").responseJSON { (response) in
    print("response: \(response)")
}
 使用 Alamofire 进行文件上传
Alamofire.upload(multipartFormData: { (multipartFormData) in
    multipartFormData.append("hello".data(using: .utf8)!, withName: "file", fileName: "file.txt", mimeType: "text/plain")
}, to: "http://www.baidu.com") { (encodingResult) in
    switch encodingResult {
    case .success(let upload, _, _):
        upload.responseJSON { response in
            print("response: \(response)")
        }
    case .failure(let encodingError):
        print("encodingError: \(encodingError)")
    }
}
 封装网络请求
class NetworkManager {
    static let shared = NetworkManager()
    func get(urlString: String, parameters: [String: Any]?, success: @escaping (Any) -> Void, failure: @escaping (Error) -> Void) {
        Alamofire.request(urlString, method: .get, parameters: parameters).responseJSON { (response) in
            switch response.result {
            case .success(let value):
                success(value)
            case .failure(let error):
                failure(error)
            }
        }
    }
    func post(urlString: String, parameters: [String: Any]?, success: @escaping (Any) -> Void, failure: @escaping (Error) -> Void) {
        Alamofire.request(urlString, method: .post, parameters: parameters).responseJSON { (response) in
            switch response.result {
            case .success(let value):
                success(value)
            case .failure(let error):
                failure(error)
            }
        }
    }
}
 参考