AFNetworking
AFHTTPRequestOperationManager 类发送
的GET 请求
- (
void
)get
{
// AFHTTPRequestOperationManager 内部包装了 NSURLConnection
AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];
NSDictionary *params = @{
@"username" : @"520it" ,
@"pwd" : @"520it"
};
[mgr GET: @"http://120.25.226.186:32812/login" parameters:params
success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog( @" 请求成功 ---%@" , responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog( @" 请求失败 ---%@" , error);
}];
// AFHTTPRequestOperationManager 内部包装了 NSURLConnection
AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];
NSDictionary *params = @{
@"username" : @"520it" ,
@"pwd" : @"520it"
};
[mgr GET: @"http://120.25.226.186:32812/login" parameters:params
success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog( @" 请求成功 ---%@" , responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog( @" 请求失败 ---%@" , error);
}];
}
AFNetworking
AFHTTPSessionManager
类发送
的GET 请求
- (
void
)get2
{
// AFHTTPSessionManager 内部包装了 NSURLSession
AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];
NSDictionary *params = @{
@"username" : @"520it" ,
@"pwd" : @"520it"
};
[mgr GET: @"http://120.25.226.186:32812/login" parameters:params success:^(NSURLSessionDataTask *task, id responseObject) {
NSLog( @" 请求成功 ---%@" , responseObject);
} failure:^(NSURLSessionDataTask *task, NSError *error) {
NSLog( @" 请求失败 ---%@" , error);
}];
// AFHTTPSessionManager 内部包装了 NSURLSession
AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];
NSDictionary *params = @{
@"username" : @"520it" ,
@"pwd" : @"520it"
};
[mgr GET: @"http://120.25.226.186:32812/login" parameters:params success:^(NSURLSessionDataTask *task, id responseObject) {
NSLog( @" 请求成功 ---%@" , responseObject);
} failure:^(NSURLSessionDataTask *task, NSError *error) {
NSLog( @" 请求失败 ---%@" , error);
}];
}
AFNetworking
AFHTTPRequestOperationManager
类发送
的POST 请求
- (
void
)post
{
// AFHTTPRequestOperationManager 内部包装了 NSURLConnection
AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];
NSDictionary *params = @{
@"username" : @"520it" ,
@"pwd" : @"520it"
};
[mgr POST: @"http://120.25.226.186:32812/login" parameters:params
success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog( @" 请求成功 ---%@" , responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog( @" 请求失败 ---%@" , error);
}];
// AFHTTPRequestOperationManager 内部包装了 NSURLConnection
AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];
NSDictionary *params = @{
@"username" : @"520it" ,
@"pwd" : @"520it"
};
[mgr POST: @"http://120.25.226.186:32812/login" parameters:params
success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog( @" 请求成功 ---%@" , responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog( @" 请求失败 ---%@" , error);
}];
}
//下载
- (
void
)download
{
AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];
[mgr downloadTaskWithRequest:<#(NSURLRequest *)#> progress:<#(NSProgress *__autoreleasing *)#> destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
return
} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
}];
{
AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];
[mgr downloadTaskWithRequest:<#(NSURLRequest *)#> progress:<#(NSProgress *__autoreleasing *)#> destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
return
} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
}];
}
XML形式数据的网络请求
- (
void
)xml
{
AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];
// responseSerializer 用来解析服务器返回的数据
// 告诉 AFN ,以 XML 形式解析服务器返回的数据
mgr.responseSerializer = [AFXMLParserResponseSerializer serializer];
NSDictionary *params = @{
@"username" : @"520it" ,
@"pwd" : @"520it" ,
@"type" : @"XML"
};
[mgr GET: @"http://120.25.226.186:32812/login" parameters:params success:^(NSURLSessionDataTask *task, NSXMLParser *parser) {
} failure:^(NSURLSessionDataTask *task, NSError *error) {
NSLog( @" 请求失败 ---%@" , error);
}];
{
AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];
// responseSerializer 用来解析服务器返回的数据
// 告诉 AFN ,以 XML 形式解析服务器返回的数据
mgr.responseSerializer = [AFXMLParserResponseSerializer serializer];
NSDictionary *params = @{
@"username" : @"520it" ,
@"pwd" : @"520it" ,
@"type" : @"XML"
};
[mgr GET: @"http://120.25.226.186:32812/login" parameters:params success:^(NSURLSessionDataTask *task, NSXMLParser *parser) {
} failure:^(NSURLSessionDataTask *task, NSError *error) {
NSLog( @" 请求失败 ---%@" , error);
}];
}
// 直接使用“服务器本来返回的数据”,不做任何解析
- (
void
)touchesBegan:(
NSSet
*)touches withEvent:(
UIEvent
*)event
{
AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];
// 直接使用 “ 服务器本来返回的数据 ” ,不做任何解析
mgr.responseSerializer = [AFHTTPResponseSerializer serializer];
// [AFJSONResponseSerializer serializer]; // 解析服务器返回的 JSON 数据
// [AFXMLParserResponseSerializer serializer]; // 解析服务器返回的 XML 数据
[mgr GET: @"http://120.25.226.186:32812/resources/images/minion_02.png" parameters: nil success:^(NSURLSessionDataTask *task, NSData *responseObject) {
NSLog( @" 请求成功 ---%zd" , responseObject.length);
} failure:^(NSURLSessionDataTask *task, NSError *error) {
NSLog( @" 请求失败 ---%@" , error);
}];
{
AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];
// 直接使用 “ 服务器本来返回的数据 ” ,不做任何解析
mgr.responseSerializer = [AFHTTPResponseSerializer serializer];
// [AFJSONResponseSerializer serializer]; // 解析服务器返回的 JSON 数据
// [AFXMLParserResponseSerializer serializer]; // 解析服务器返回的 XML 数据
[mgr GET: @"http://120.25.226.186:32812/resources/images/minion_02.png" parameters: nil success:^(NSURLSessionDataTask *task, NSData *responseObject) {
NSLog( @" 请求成功 ---%zd" , responseObject.length);
} failure:^(NSURLSessionDataTask *task, NSError *error) {
NSLog( @" 请求失败 ---%@" , error);
}];
}
第三方类库 AFNetworking的网络状态监听
- (
void
)afnMonitoring
{
// 开始网络监控
AFNetworkReachabilityManager *mgr = [AFNetworkReachabilityManager sharedManager];
[mgr setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
NSLog( @"----- 当前的网络状态 ---%zd" , status);
}];
[mgr startMonitoring];
// 拿到当前网络状态
// mgr.networkReachabilityStatus;
{
// 开始网络监控
AFNetworkReachabilityManager *mgr = [AFNetworkReachabilityManager sharedManager];
[mgr setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
NSLog( @"----- 当前的网络状态 ---%zd" , status);
}];
[mgr startMonitoring];
// 拿到当前网络状态
// mgr.networkReachabilityStatus;
}
如果没有使用AFN,我们使用的是苹果自带的NSURLSession 或者 NSURLConnection进行的网络请求,监听网络状态使用下面的方法,通过观察者的方式监听,记得移除观察者。
- (
void
)appleMonitoring
{
// 监听通知
[[ NSNotificationCenter defaultCenter ] addObserver : self selector : @selector (getNetworkStatus) name : kReachabilityChangedNotification object : nil ];
// 开始监控网络
self . reachability = [ Reachability reachabilityForInternetConnection ];
[ self . reachability startNotifier ];
}
- ( void )getNetworkStatus
{
if ([ Reachability reachabilityForLocalWiFi ]. currentReachabilityStatus != NotReachable ) {
NSLog ( @" 是 wifi" );
} else if ([ Reachability reachabilityForInternetConnection ]. currentReachabilityStatus != NotReachable ) {
NSLog ( @" 是手机自带网络 " );
} else {
NSLog ( @" 网络有问题 " );
}
}
- ( void )dealloc
{
// 当控制器消亡过后我们需要移除观察者对象
[[ NSNotificationCenter defaultCenter ] removeObserver : self ];
// 停止网络转态监听
[ self . reachability stopNotifier ];
self . reachability = nil ;
{
// 监听通知
[[ NSNotificationCenter defaultCenter ] addObserver : self selector : @selector (getNetworkStatus) name : kReachabilityChangedNotification object : nil ];
// 开始监控网络
self . reachability = [ Reachability reachabilityForInternetConnection ];
[ self . reachability startNotifier ];
}
- ( void )getNetworkStatus
{
if ([ Reachability reachabilityForLocalWiFi ]. currentReachabilityStatus != NotReachable ) {
NSLog ( @" 是 wifi" );
} else if ([ Reachability reachabilityForInternetConnection ]. currentReachabilityStatus != NotReachable ) {
NSLog ( @" 是手机自带网络 " );
} else {
NSLog ( @" 网络有问题 " );
}
}
- ( void )dealloc
{
// 当控制器消亡过后我们需要移除观察者对象
[[ NSNotificationCenter defaultCenter ] removeObserver : self ];
// 停止网络转态监听
[ self . reachability stopNotifier ];
self . reachability = nil ;
}