[ios8] Error Domain = NSURLErrorDomain Code = -1005“네트워크 연결이 끊어졌습니다.”

iOS7과 iOS8 모두 Xcode6-Beta1 및 Xcode6-Beta2에서 잘 작동하는 응용 프로그램이 있습니다. 그러나 Xcode6-Beta3, Beta4, Beta5에서는 iOS8의 네트워크 문제에 직면하고 있지만 iOS7에서는 모든 것이 잘 작동합니다. 오류가 발생 "The network connection was lost."합니다. 오류는 다음과 같습니다.

오류 : 오류 Domain = NSURLErrorDomain 코드 = -1005 “네트워크 연결이 끊어졌습니다.” UserInfo = 0x7ba8e5b0 {NSErrorFailingURLStringKey =, _kCFStreamErrorCodeKey = 57, NSErrorFailingURLKey =, NSLocalizedDescription = 네트워크 연결이 끊어졌습니다. _kCFStreamErrorDomainKey = 1, NSUnderlyingError = 0x7a6957e0 “네트워크 연결이 끊어졌습니다.”}

AFNetworking 2.x와 다음 코드 스 니펫을 사용하여 네트워크 호출을합니다.

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);
      }];

시도 NSURLSession했지만 여전히 같은 오류가 발생합니다.



답변

시뮬레이터를 다시 시작하면 문제가 해결되었습니다.


답변

이 정확한 오류가 있었고 기본 HTTP 구현에 문제가있는 것으로 나타났습니다. NSURLRequest :

우리가 알 수있는 한, iOS 8/9/10/11이 Keep-Alive헤더 로 HTTP 응답을 수신하면 나중에 다시 사용해야하기 위해이 연결을 유지하지만 timeout매개 변수 이상의 매개 변수는 유지합니다. Keep-Alive 헤더 (항상 30 초 동안 연결을 유지하는 것 같습니다.) 그런 다음 30 초 이내에 앱에서 두 번째 요청을 보내면 서버에서 삭제되었을 수있는 연결을 다시 사용하려고 시도합니다. (실제보다 많으면Keep-Alive 경과 한 경우).

지금까지 찾은 솔루션은 다음과 같습니다.

  • 서버의 시간 종료 매개 변수를 30 초 이상 늘리십시오. Keep-Alive 헤더에 제공된 값에 관계없이 서버가 30 초 동안 연결을 유지하는 것처럼 iOS가 항상 작동하는 것처럼 보입니다. (이것은 Apache에서KeepAliveTimeout 옵션 옵션 .
  • 앱의 User-Agent (예 : BrowserMatch "iOS 8\." nokeepalivemod 파일의 Apache :)를 기반으로 iOS 클라이언트에 대한 연결 유지 메커니즘을 비활성화 할 수 있습니다.setenvif.conf )
  • 서버에 액세스 할 수없는 경우 Connection: close헤더를 사용 하여 요청을 보낼 수 있습니다 . 이렇게하면 서버가 연결을 즉시 끊고 활성 헤더를 유지하지 않고 응답하도록 지시합니다. 그러나 현재 NSURLSession은 Connection요청을 보낼 때 헤더 를 재정의하는 것으로 보입니다 (아파치 구성을 조정할 수 있으므로이 솔루션을 광범위하게 테스트하지는 않았습니다)

답변

내 경우 Resetting content and settings에는 시뮬레이터가 작동합니다. 시뮬레이터를 재설정하려면 다음 단계를 수행하십시오.

iOS 시뮬레이터-> 내용 및 설정 재설정-> 재설정을 누릅니다 (나올 경고에)


답변

iOS 8.0 시뮬레이터 런타임에는 시뮬레이션 된 장치가 부팅되는 동안 네트워크 구성이 변경되면 시뮬레이션 된 런타임의 상위 수준 API (예 : CFNetwork)가 네트워크 연결이 끊어진 것으로 생각합니다. 현재 권장되는 해결 방법은 네트워크 구성이 변경 될 때 시뮬레이션 된 장치를 재부팅하는 것입니다.

이 문제의 영향을받는 경우 http://bugreport.apple.com 에 추가 중복 레이더를 제출 하여 우선 순위를 높이십시오.

네트워크 구성을 변경 하지 않고이 문제가 발생 하면 알려진 버그가 아니며, 알려진 네트워크 구성 변경 버그가 아님을 나타내는 레이더를 제출해야합니다.


답변

나를 위해 문제를 해결 한 것은 시뮬레이터를 다시 시작하고 내용과 설정을 재설정하는 것이 었습니다.


답변

iOS 8 시뮬레이터에서 실행할 때 베타 5 및 AFNetworking 1.3에 문제가있어 연결 오류가 발생합니다.

Domain = NSURLErrorDomain Code = -1005 “네트워크 연결이 끊어졌습니다.”

동일한 코드가 iOS 7 및 7.1 시뮬레이터에서 제대로 작동하며 디버깅 프록시는 실제로 연결을 시도하기 전에 실패가 발생한다는 것을 보여줍니다 (즉, 요청이 기록되지 않음).

NSURLConnection의 실패를 추적하고 Apple에 버그를보고했습니다. 첨부 된 이미지의 5 행을 참조하십시오.

NSURLConnection 클라이언트 대리자 오류가 발생했습니다.

사용 변경 https 간헐적 인 오류가 있지만 iOS 8 시뮬레이터에서 연결할 수 있습니다.

Xcode 6.01 (gm)에 여전히 문제가 있습니다.


답변

Alamofire를 사용하는 동안이 문제가 발생했습니다. 내 실수는 [:]매개 변수를 GET보내는 것이 아니라 요청시 매개 변수에 대한 빈 사전 을 보내는 것 nil입니다.

도움이 되었기를 바랍니다!