我使用AFNetowrking同步调用Web服务。例如,我正在上传一些数据到服务器,而上传的wifi已经用完。我怎么知道wifi不可用并取消请求?
答案 0 :(得分:1)
我不知道您是否使用过Reachability类。但如果没有使用,则在下面的Apple示例代码中给出。
在项目中包含这些类。现在,在AppDelegate.m
文件的帮助下,您可以跟踪网络的可用性。
在didFinishLaunchingWithOptions:
方法中添加通知观察者。这将通知网络更改。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityDidChange:) name:kReachabilityChangedNotification object:nil];
}
当主机连接或网络连接发生任何变化时,通知方法将会调用。
- (void)reachabilityDidChange:(NSNotification *)notification {
Reachability *reachability = (Reachability *)[notification object];
NetworkStatus internetStatus = [reachability currentReachabilityStatus];
switch (internetStatus) {
case NotReachable: {
NSLog(@"The internet is down.");
break;
}
case ReachableViaWiFi: {
NSLog(@"The internet is working via WIFI.");
break;
}
case ReachableViaWWAN: {
NSLog(@"The internet is working via WWAN.");
break;
}
}
NetworkStatus hostStatus = [reachability currentReachabilityStatus];
switch (hostStatus) {
case NotReachable: {
NSLog(@"A gateway to the host server is down.");
break;
}
case ReachableViaWiFi: {
NSLog(@"A gateway to the host server is working via WIFI.");
break;
}
case ReachableViaWWAN: {
NSLog(@"A gateway to the host server is working via WWAN.");
break;
}
}
}
当您失去连接时,取消NSURLConnection
请求。
要取消请求,请使用- (void)cancel;
的{{1}}方法。
答案 1 :(得分:0)
重新启动请求,直到WiFi再次活动,该怎么办?
试试这个cocoapod:https://github.com/shaioz/AFNetworking-AutoRetry