ASIHTTPRequest ошибка подключения в автономном режиме - PullRequest
2 голосов
/ 27 июля 2011

У меня проблема с ASIHTTPRequest , я пытаюсь разработать приложение для iphone с UIWebview, которое можно использовать при запуске пользователем без сети.

Эта библиотека идеальна, но явыдается ошибка, когда я запускаю свое приложение в автономном режиме.

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

Я не могу понять, почему это происходит, потому что я запустил свое приложение один раз (это означает, что кэш загружен), и когда я иду через SSH в свойПапка приложения iPhone, я могу видеть все кэшированные данные.

Тогда почему, когда я переключаю свой 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];

Я взял образец из документации , поэтому я не понимаю, в чем проблема.

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 11 декабря 2012

Вы убедились, что все данные кэшированы? Сервер может запретить кэширование страниц, установив заголовки управления HTTP Cache: «no-cache», «no-store», Pragma «no-store»

Даже если данные кэшируются, они могут не обслуживаться из кэша. Это когда кешированные данные истекли к моменту последующего запроса. Вы можете проверить позже, установив политику кэширования:

[request setCachePolicy:ASIDontLoadCachePolicy];

ASIDontLoadCachePolicy - если кэшированные данные существуют, используйте их, даже если они устарели. Если кэшированные данные не существуют, остановитесь (не будет отображать ошибку по запросу)

...