AFNetworking

## 下载AFNetworking开源代码




点击链接:[AFNetworking](https://github.com/AFNetworking/AFNetworking/archive/master.zip)
# 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"


---


```
requestSerializer 默认是 [AFHTTPRequestSerializer serializer];


responseSerializer 默认是 [AFJSONResponseSerializer serializer];
```
## 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];
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值