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)
}
}
}
}
参考