If the answer above does not solve your problem, then your problem may be caused by calling [AFNetworkReachabilityManager sharedManager].reachable while it is in the middle of the startMonitoring process, where it will always return NO .
I had the same problem. I called the web service, but AFNetworkReachabilityManager did not finish the monitoring process and returned reachable = NO , although I had an Internet connection.
- (void) callWebService { NSLog(@"Calling Webservice..."); if ([AFNetworkReachabilityManager sharedManager].reachable == NO) { NSLog(@"%@", kErrorNoInternet); return; }
So, to solve this, I did the trick. The called web service after some delay (in this example, 0.05 seconds).
Before:
[self callWebService]
Output: 
After:
[self performSelector:@selector(callWebService) withObject:nil afterDelay:0.3];
Output:

You can see at the output, the time difference is hardly 0.05 s (the exact value is 0.048 seconds).
Hope this helps.
source share