2011-07-27 5 views
2

ASIHTTPRequest에 문제가 있습니다. 사용자가 네트워크없이 실행할 수있는 UIWebview를 사용하여 iphone 앱을 개발하려고합니다.ASIHTTPRequest 오프라인 모드 연결 실패

이 라이브러리는 완벽하지만 오프라인에서 앱을 실행하면 오류가 발생합니다. 내가 한 번 내 응용 프로그램을 시작하기 때문에 이런 일이 왜 찾을 수

Error Domain=ASIHTTPRequestErrorDomain Code=1 UserInfo=0x17bdb0 "A connection failure occurred" 

은 (는 캐시가 다운로드 의미), 나는 내 아이폰의 응용 프로그램 폴더에 축복하는 SSH를 갈 때, 나는 모든 캐시 된 데이터를 볼 수 있습니다.

그렇다면 비행기 모드에서 iPhone을 넣을 때 나는이 메시지를 받았습니까? 이 문제입니다 내가 이해하지 못하는 이유

NSURL *url = [NSURL URLWithString:@"http://mywebsite.com"]; 
    [[self request] setDelegate:nil]; 
    [[self request] cancel]; 
    [self setRequest:[ASIWebPageRequest requestWithURL:url]]; 
    [[self request] setShouldAttemptPersistentConnection:NO]; 
    [[self request] setDelegate:self]; 
    [[self request] setDidFailSelector:@selector(webPageFetchFailed:)]; 
    [[self request] setDidFinishSelector:@selector(webPageFetchSucceeded:)]; 

    [[self request] setUrlReplacementMode:ASIReplaceExternalResourcesWithData]; 
    [request setCacheStoragePolicy:ASICachePermanentlyCacheStoragePolicy]; 

    [[self request] setDownloadCache:[ASIDownloadCache sharedCache]]; 

    [[self request] setDownloadDestinationPath: 
    [[ASIDownloadCache sharedCache] pathToStoreCachedResponseDataForRequest:[self request]]]; 

    [[self request] startAsynchronous]; 

내가 documentation에서 샘플을했다 :

다음은 요청을하려면 (매우 간단) 내 코드입니다.

도움 주셔서 감사합니다.

답변

0

모든 데이터가 캐시되었는지 확인 했습니까? 서버에서 HTTP 캐시 제어 헤더 ("no-cache" "no-store", Pragma no-store)를 설정하여 페이지 캐싱을 방지 할 수 있습니다.

데이터가 캐시 된 경우에도 캐시에서 제공되지 않을 수 있습니다. 캐시 된 데이터가 후속 요청 시간까지 만료 된 경우입니다. 당신은 캐시 정책을 설정하여 이상을 확인할 수 있습니다

[request setCachePolicy:ASIDontLoadCachePolicy]; 

ASIDontLoadCachePolicy을 - 캐시 된 데이터가 존재하는 경우,이 오래된 경우에도 그것을 사용할 수 있습니다. 캐시 된 데이터가없는 경우 중지 (요청시 오류를 설정하지 않음)