【发布时间】:2014-08-05 22:15:02
【问题描述】:
我使用AFHTTPSessionManager 向服务器发送请求,并使用可达性逻辑检查是否存在连接。
请求的代码很简单:
[manager POST:urlString parameters:parameters success:^(NSURLSessionDataTask *task, id responseObject) {
//Parse data...
} failure:^(NSURLSessionDataTask *task, NSError *error) {
NSLog(@"Error: %@", error);
}];
此外,还有一些代码可以检查可用性,例如 GitHub 中的示例:
NSOperationQueue *operationQueue = manager.operationQueue;
[manager.reachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
switch (status) {
case AFNetworkReachabilityStatusReachableViaWWAN:
case AFNetworkReachabilityStatusReachableViaWiFi:
[operationQueue setSuspended:NO];
break;
case AFNetworkReachabilityStatusNotReachable:
default:
[operationQueue setSuspended:YES];
break;
}
}];
当状态改变时(例如AFNetworkReachabilityStatusNotReachable 到AFNetworkReachabilityStatusReachableViaWiFi),请求被恢复,为什么会执行失败块?这是什么原因?我是不是做错了什么?
【问题讨论】:
-
AppDelagate中是否开启了AFNetworkReachabilityManager监控?
-
否。它是在初始化管理器时启动的。有区别吗,可达性管理器在哪里启动?
-
评论
setReachabilityStatusChangeBlock会发生什么? -
请求执行,但由于队列未挂起而失败并出现
NSURLErrorCannotConnectToHost代码。 -
如果您使用的 baseUrl 不同于初始化
AFHTTPSessionManager的默认值,那么当您将其更改为类似“google.com”时会发生什么?
标签: ios objective-c afnetworking