下载AFNetworking开源代码
点击链接:AFNetworking
Architecture
NSURLConnection
- AFURLConnectioinOperatioin
- AFHTTPRequestOperation
- AFHTTPRequestOperationManager
NSURLSession(iOS 7 /Mac OS 10.9)
- AFURLSessionManager
- AFHTTPSessionManager
Serialization
AFURLRequestSerialization
AFHTTPRequestSerialization
AFJSONRequestSerialization
AFPropertyListRequestSerialization
AFURLResponseSerialization
AFHTTPResponseSerialization
AFJSONResponseSerialization
AFXMLParserResponseSerialization
AFXMLDocumentResponseSerialization (
MAC OS X
)AFPropertyListResponseSerialization
AFImageResponseSerializer
AFCompoundResponseSerializer
Additional Functionality
- AFSecurityPolicy
- AFNetworkReachabilityManager
Usage
#define kBaseURL @”http://afnetworking.sinaapp.com“
|
|
AFHTTPRequestOperation
NSString *urlStr = [kBaseURL stringByAppendingPathComponent:@"request_get.json"];
NSDictionary *parameters = @{@"foo":@"bar"};
NSURLRequest *request = [[AFHTTPRequestSerializer serializer] requestWithMethod:@"GET" URLString:urlStr parameters:parameters error:nil];
AFHTTPRequestOperation *op = [[AFHTTPRequestOperation alloc]initWithRequest:request];
op.responseSerializer = [AFJSONResponseSerializer serializer];
[op setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"response object : %@",responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error : %@",error);
}];
[[NSOperationQueue mainQueue] addOperation:op];
-----------------------------------------------------
结果:
Success:
response object : {
data = {
foo = bar;
};
success = 1;
}
Error:{
"errors":"Parameter error!",
"success":false
}
-----------------------------------------------------
AFHTTPRequestOperationManager
GET
Request
NSString *urlStr = [kBaseURL stringByAppendingPathComponent:@"request_get.json"];
NSDictionary *parameters = @{@"foo":@"bar"};
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager GET:urlStr parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"response object : %@",responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error : %@",error);
}];
-----------------------------------------------------
结果:
Success:
response object : {
data = {
foo = bar;
};
success = 1;
}
Error:{
"errors":"Parameter error!",
"success":false
}
-----------------------------------------------------
POST
URL-Form-Request
NSString *httpUrlStr = [kBaseURL stringByAppendingPathComponent:@"request_post_body_http.json"];
NSDictionary *parameters = @{@"foo":@"bar"};
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager POST:httpUrlStr parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"response object : %@",responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error : %@",error);
}];
NSString *jsonUrlStr = [kBaseURL stringByAppendingPathComponent:@"request_post_body_json.json"];
[manager POST:jsonUrlStr parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"Response object : %@",responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error : %@",error);
}];
-----------------------------------------------------
结果:
Success:
response object : {
data = {
foo = bar;
};
success = 1;
}
Error:{
"errors":"Parameter error!",
"success":false
}
-----------------------------------------------------
POST
Multi-Part-Request
NSString *urlStr = [kBaseURL stringByAppendingPathComponent:@"upload2server.json"];
NSDictionary *parameters = @{@"foo":@"bar"};
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager POST:urlStr parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"b_Aquarius" withExtension:@"jpg"];
[formData appendPartWithFileURL:fileURL name:@"image" fileName:@"constellation.jpg" mimeType:@"image/jpeg" error:nil];
fileURL = [[NSBundle mainBundle] URLForResource:@"b_Aries" withExtension:@"png"];
[formData appendPartWithFileURL:fileURL name:@"image" fileName:@"constellation.png" mimeType:@"image/png" error:nil];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"Response object : %@",responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error : %@",error);
}];
-----------------------------------------------------
结果:
Success:
Response object : {
data = (
{
name = "constellation.jpg";
url = "http://afnetworking-userdomain.stor.sinaapp.com/constellation.jpg";
},
{
name = "constellation.png";
url = "http://afnetworking-userdomain.stor.sinaapp.com/constellation.png";
}
);
success = 1;
}
-----------------------------------------------------
AFURLSessionManager
Creating a Download Task
/#define kDownloadUrl @”http://music.baidu.com/data/music/file?link=http://yinyueshiting.baidu.com/data2/music/346495/3464861417179661128.mp3?xcode=91aea20a92711d3d83f3f76a0952eb4b63b77ba183a87289&song_id=346486“ kDownloadUrl 是下载链接
NSURL *url = [NSURL URLWithString:kDownloadUrl];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
AFURLSessionManager *manager = [[AFURLSessionManager alloc]initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
NSProgress *progress = nil;
NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:&progress destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
NSString *filePath = @"/Users/qingyun/Desktop";
NSString *newFielPath = [filePath stringByAppendingPathComponent:response.suggestedFilename];
NSLog(@"name : %@",response.suggestedFilename);
return [NSURL fileURLWithPath:newFielPath];
} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
if (error) {
NSLog(@"Error : %@",error);
}else{
NSLog(@"File path : %@",filePath);
}
}];
[downloadTask resume];
-----------------------------------------------------
结果:
Success: File path : file:///Users/qingyun/Desktop/Only%20Love.mp3
-----------------------------------------------------
Creation a Upload Task
NSString *urlStr = [kBaseURL stringByAppendingPathComponent:@"upload2server.json"];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlStr]];
AFURLSessionManager *manager = [[AFURLSessionManager alloc]initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
NSProgress *progress = nil;
NSString *filePath = @"file:///Users/qingyun/Desktop/xml&json.pdf";
NSURLSessionUploadTask *uploadTask = [manager uploadTaskWithRequest:request fromFile:[NSURL fileURLWithPath:filePath] progress:&progress completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {
if (error) {
NSLog(@"Error : %@",error);
}else{
NSLog(@"Response objecct : %@",responseObject);
}
}];
[uploadTask resume];
-----------------------------------------------------
结果:
Success:Response objecct : {
success = 1;
}
-----------------------------------------------------
Creation a Upload Task For Multi-Part Request, With Progress
NSString *urlStr = [kBaseURL stringByAppendingPathComponent:@"upload2server.json"];
NSURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:urlStr parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"b_Cancer" withExtension:@"png"];
[formData appendPartWithFileURL:fileURL name:@"image" fileName:@"Cancer.png" mimeType:@"image/png" error:nil];
fileURL = [NSURL URLWithString:@"file://Users/qingyun/Desktop/xml&json.pdf"];
[formData appendPartWithFileURL:fileURL name:@"image" error:nil];
} error:nil];
NSProgress *progress = nil;
AFURLSessionManager *manager = [[AFURLSessionManager alloc]initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
NSURLSessionUploadTask *uploadTask = [manager uploadTaskWithStreamedRequest:request progress:&progress completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {
if (error) {
NSLog(@"Error : %@",error);
}else{
NSLog(@"Response objecct : %@",responseObject);
}
}];
[uploadTask resume];
-----------------------------------------------------
结果:
Success:Response objecct : {
data = (
{
name = "Cancer.png";
url = "http://afnetworking-userdomain.stor.sinaapp.com/Cancer.png";
}
);
success = 1;
}
-----------------------------------------------------
Creation a Data Task
NSURL *url = [NSURL URLWithString:[kBaseURL stringByAppendingPathComponent:@"response.json"]];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
AFURLSessionManager *manager = [[AFURLSessionManager alloc]initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
NSURLSessionDataTask *dataTask = [manager dataTaskWithRequest:request completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {
if (error) {
NSLog(@"Error : %@",error);
}else{
NSLog(@"response object : %@",responseObject);
}
}];
[dataTask resume];
-----------------------------------------------------
结果:
Success: response object : {
data = "This is a json data.";
success = 1;
}
-----------------------------------------------------
AFHTTPSessionManager
GET
Request
NSString *urlStr = [kBaseURL stringByAppendingPathComponent:@"request_get.json"];
NSDictionary *parameters = @{@"foo":@"bar"};
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
NSURLSessionDataTask *dataTask = [manager GET:urlStr parameters:parameters success:^(NSURLSessionDataTask *task, id responseObject) {
NSLog(@"response object : %@",responseObject);
} failure:^(NSURLSessionDataTask *task, NSError *error) {
NSLog(@"Error : %@",error);
}];
[dataTask resume];
----------------------------------------------------
结果:
Success :response object : {
data = {
foo = bar;
};
success = 1;
}
----------------------------------------------------
POST
Request
NSString *urlStr = [kBaseURL stringByAppendingPathComponent:@"request_post_body_http.json"];
NSDictionary *parameters = @{@"foo":@"bar"};
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
NSURLSessionDataTask *dataTask = [manager POST:urlStr parameters:parameters success:^(NSURLSessionDataTask *task, id responseObject) {
NSLog(@"response object : %@",responseObject);
} failure:^(NSURLSessionDataTask *task, NSError *error) {
NSLog(@"Error : %@",error);
}];
[dataTask resume];
-----------------------------------------------------
结果:
Success:response object : {
data = {
foo = bar;
};
success = 1;
}
-----------------------------------------------------
HEAD
Request
NSString *urlStr = [kBaseURL stringByAppendingPathComponent:@"request_post_body_http.json"];
NSDictionary *parameters = @{@"foo":@"bar"};
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
NSURLSessionDataTask *dataTask = [manager HEAD:urlStr parameters:parameters success:^(NSURLSessionDataTask *task) {
NSLog(@"Task : %@",task);
} failure:^(NSURLSessionDataTask *task, NSError *error) {
NSLog(@"Task : %@ Error : %@",task,error);
}];
[dataTask resume];
----------------------------------------------------
结果:
Success: Task : <__NSCFLocalDataTask: 0x8d77b10> { completed }
----------------------------------------------------
AFNetworkReachabilityManager
/*
*AFNetworkReachabilityStatusNotReachable = 0,
*AFNetworkReachabilityStatusReachableViaWWAN = 1,
*AFNetworkReachabilityStatusReachableViaWiFi = 2
*/
NSArray *array = @[@"不可达",@"2G/3G/4G",@"wi-fi"];
[AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];
[self.manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"网络检测" message:[NSString stringWithFormat:@"%@",array[status]] delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
[alert show];
}];
-----
[manager startMonitoring];
[manager stopMonitoring];