2009-09-15 5 views
62

위임자와 함께이 NSURLConnection을 사용하고 있습니다.NSURLConnection 시간 초과?

nsconnection = [[NSURLConnection alloc] initWithRequest:request 
    delegate:self startImmediately:YES]; 

웹 사이트가 전혀 응답하지 않는 문제가 있습니다. 아무것도 아니야, 빈 페이지가있는 브라우저에서 회전하고 실패하지 않습니다. 내 대표자는 실패를 처리하지만 사이트가 응답하지 않으면 대표가 호출되지 않습니다. 연결을 시간 종료하는 방법에 대한 아이디어가 있습니까?

답변

127

NSURLRequest 개체에 시간 초과를 지정할 수 있습니다. 이를 수행하는 한 가지 방법은 requestWithURL:cachePolicy:timeoutInterval: 메소드를 통해 생성하는 것입니다. 해당 부분에 대해 걱정하지 않으려는 경우 기본값 NSURLRequestUseProtocolCachePolicy cachePolicy 매개 변수를 전달할 수 있습니다. 시간 초과는 기본적으로 iPhone SDK의 모든 시간 간격과 마찬가지로 초 단위의 부동 소수점 값입니다.

또한 NSURLConnection 대리인이 설정되어 있고 connection:didFailWithError: 메서드에 응답해야합니다. 연결이 완료되면 연결은 항상이 메서드 또는 connectionDidFinishLoading:을 호출합니다.

+0

대리인이 작업을 수행하고 오류가 웹 서버로 전송 될 때 응답 않습니다. 이 경우 웹 서버는 아무것도 보내지 않습니다. 그냥 회전합니다. 요청 메소드가 시간 초과를 추가하도록 구성합니다. 감사합니다 – Jordan

+0

방금 ​​확인했습니다. 타임 아웃을 위해 이미 구성되었습니다. – Jordan

+0

NSURLStuff에 대한 대안을 시험해보고 싶다면 내 친구가 ASIHTTPRequest (google it)를 사용하는 것이 좋습니다. 시간 제한 기능을 포함하여 무료입니다. – Tyler

24

편집 :이 답변은 현재 사용되지 않지만 답변일에 정확합니다.

나는이 스레드가 오래되었음을 알고 있지만이 문제도 다루었습니다. 이것은 서비스가 살았던 내부 네트워크 외부에서 앱을 테스트 할 때 발생했습니다. 서비스는 결국 타임 아웃되지만, 애플은 타임 아웃이 발생하기 전에 240 초 (4 분)의 기간을 요구합니다. 문제에 대한 자세한 정보는이 글을 확인하십시오.

NSMutableURLRequest not obeying my timeoutInterval

+0

내 응용 프로그램에 NSCredentials를 추가하여이 문제를 해결했다고 생각합니다. 응답하지 않는 이유는 서버가 인증을 요구하기 때문이었습니다. – Jordan

+3

그건 잘못된 정보입니다! http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSURLRequest_Class/Reference/Reference.html%23//apple_ref/occ/cl/NSURLRequest에 따르면 기본 시간 초과 간격은 다음과 같습니다. 60 초. – stigi

+4

@stigi ezekielDFM이 iOS에 대해 말하는 반면 Mac OS 용 자료를 참조하는 것처럼 보입니다. – leukosaima