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;
}

// GET 请求

- (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];
}

// Post 请求
- (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)
            }
        }
    }
}

参考