I have an application which works fine on Xcode6-Beta1 and Xcode6-Beta2 with both iOS7 and iOS8. But with Xcode6-Beta3, Beta4, Beta5 I'm facing network issues with iOS8 but everything works fine on iOS7. I get the error "The network connection was lost."
. The error is as follows:
Error: Error Domain=NSURLErrorDomain Code=-1005 "The network connection was lost." UserInfo=0x7ba8e5b0 {NSErrorFailingURLStringKey=, _kCFStreamErrorCodeKey=57, NSErrorFailingURLKey=, NSLocalizedDescription=The network connection was lost., _kCFStreamErrorDomainKey=1, NSUnderlyingError=0x7a6957e0 "The network connection was lost."}
I use AFNetworking 2.x and the following code snippet to make the network call:
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager setSecurityPolicy:policy];
manager.requestSerializer = [AFHTTPRequestSerializer serializer];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
[manager POST:<example-url>
parameters:<parameteres>
success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@“Success: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
I tried NSURLSession
but still receive the same error.
Also have a problem with beta 5 and AFNetworking 1.3 when running on iOS8 simulator that results in a connection error "Domain=NSURLErrorDomain Code=-1005 "The network connection was lost."". The same code works fine on iOS7 and 7.1 simulators and my debugging proxy shows that the failure occurs before a connection is actually attempted (i.e. no requests logged). I have tracked the failure to NSURLConnection and reported bug to Apple. See attached line 5 in attached image.. Changing to use https allows connection from iOS8 simulators albeit with intermittent errors. Problem is still present in Xcode 6.01 (gm).
I was having this issue for the following reason.
TLDR: Check if you are sending a
GET
request that should be sending the parameters on the url instead of on theNSURLRequest's HTTBody
property.==================================================
I had mounted a network abstraction on my app, and it was working pretty well for all my requests.
I added a new request to another web service (not my own) and it started throwing me this error.
I went to a playground and started from the ground up building a barebones request, and it worked. So I started moving closer to my abstraction until I found the cause.
My abstraction implementation had a bug: I was sending a request that was supposed to send parameters encoded in the url and I was also filling the
NSURLRequest's HTTBody
property with the query parameters as well. As soon as I removed theHTTPBody
it worked.We had this exact error and it turned out to be an issue with the underlying HTTP implementation of
NSURLRequest
:As far as we can tell, when iOS 8/9/10/11 receive an HTTP response with a
Keep-Alive
header, it keeps this connection to re-use later (as it should), but it keeps it for more than thetimeout
parameter of the Keep-Alive header (it seems to always keep the connection alive for 30 seconds.) Then when a second request is sent by the app less than 30 seconds later, it tries to re-use a connection that might have been dropped by the server (if more than the realKeep-Alive
has elapsed).Here are the solutions we have found so far:
KeepAliveTimeout
option.BrowserMatch "iOS 8\." nokeepalive
in the mod filesetenvif.conf
)Connection: close
header: this will tell the server to drop the connection immediately and to respond without any keep alive headers. BUT at the moment, NSURLSession seems to override theConnection
header when the requests are sent (we didn't test this solution extensively as we can tweak the Apache configuration)Test if you can request from other apps (like safari). If not might be something on your computer. In my case I had this problem with Avast Antivirus, which was blocking my simulators request (don't ask me why).
I had to exit XCode, delete DerivedData folder contents (~/Library/Developer/Xcode/DerivedData or /Library/Developer/Xcode/DerivedData) and exit simulator to make this work.
Whenever got error -1005 then need to call API Again.
You need to Add your code to call function again. MakeSure that you were call method once otherwise its call recursive loop.