2009-12-10 3 views
2

UIWebview를로드하고로드를 완료하는 데 약간의 시간이 소요될 수 있습니다. 요청이 시작되어 데이터 수신을 시작합니다. 그러나 요청이 완료된 것으로 나타나지 않습니다. webViewDidFinishLoad는 결코 호출하지 않으며 webView didFailLoadWithError : callback도하지 않습니다.데이터로드가 시작되지만 webViewDidFinishLoad가 아닌 경우 NSMutableURLRequest 시간 초과가 트리거되지 않습니다.

NSURLRequest의 시간 초과는 데이터를 수신하는 응답이 없거나 해당 간격에서도 요청이 완료되지 않으면 트리거됩니까?

이전 버전 인 경우 요청을 시간 초과 할 수있는 우아한 해결책이 있습니까?

관련 코드는 다음과 같습니다

로드 요청 :

- (void) loadRequest { NSString *targetURL = @" http://myrequestUrl/ "; NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] initWithURL: [NSURL URLWithString: targetURL] cachePolicy: NSURLRequestReloadIgnoringLocalCacheData timeoutInterval: 15.0] autorelease];

[request setHTTPBasicID: [[self credentialManager] userID] password:[[self credentialManager] password]]; 
[webView loadRequest:request]; 

대표는

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible: NO]; [alert hide]; [alert autorelease]; alert = nil; NSLog(@"error - %@", error); [self showRetryPrompt: error];
}

답변

5

에게 NSURLRequest가 연결을위한위한 타임 아웃 시간 초과에 응답 할 수 있습니다. 연결되어 있고 서버가 응답하는 데 오랜 시간이 걸리면 제한 시간이 지나치게 좋지 않을 것입니다. 원하는 제한 시간 동안 자신의 NSTimer를 설정하고 요청을 직접 취소해야합니다.

0

user158743에 동의합니다.

NSTimer를 사용하여 webViewDidStartLoad 대리자 메서드에서 시작하도록 타이머를 설정 한 다음 webViewDidFinishLoad 및 webViewDidStarLoad 메서드에 카운터가 있는지 확인하여 webView가로드되었는지 확인합니다 (이것은 못생긴 해킹이지만 자바 스크립트를 사용하여 페이지의 요소 수를 확인하면이 두 메서드가 몇 번 호출되는지 알 수있는 방법이 없습니다.

그런 다음 타이머가 실행 된 후에 실행중인 방법으로 카운터를 확인하면 정상적으로 작동하는지 확인하십시오.

NSTimer 코드는 여기 ->http://www.iphonedevsdk.com/forum/iphone-sdk-development/14403-nstimer-examples.html

희망이 도움이, 그것은 나를 위해 않았다. 결함이 있음을 알고 있지만 처음에는 경량 인 스플래시 화면을로드 할 때 결함이 있음을 나에게 알립니다. 나는 여전히 솔루션을 찾고 있지만 다른 대안이 있다면 편집을 게시 할 것입니다.

의견을 크게 환영합니다!

관련 문제