WebView и «тайм-аут» - PullRequest
       4

WebView и «тайм-аут»

0 голосов
/ 21 декабря 2011

У меня есть вопрос, в моем приложении мне нужно подключение и веб-просмотр для отображения веб-контента.Проблема в том, что у меня есть имя пользователя и пароль, которые должны быть правильными, чтобы получить соединение.Теперь я хочу получить предупреждение, если имя пользователя указано неверно.

 - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error

не работает для этого, потому что, если имя пользователя или пароль неверны, они продолжат загрузку (даже если ничего не будет отображаться).

Есть ли возможность«сказать» веб-просмотру, чтобы установить временной интервал, а затем отобразить предупреждение?

СПАСИБО ТАКОЕ!

1 Ответ

0 голосов
/ 22 декабря 2011

Если вы проходите аутентификацию на своем сервере через HTTP-аутентификацию (согласно вашему комментарию выше), я бы сделал это по-другому.Когда пользователь вводит свое имя пользователя / pwd, отправьте запрос на любую страницу (что-то облегченное), используя NSURLConnection.Если имя пользователя / пароль неверны, вы можете обработать ошибки в методах NSURLConnectionDelegate и запросить у пользователя новое имя пользователя / пароль.

Вы также можете сделать это с версией iOS 5 NSURLConnection вместо iOS.методов делегата, но документы не очень хороши.

Когда этот первый запрос завершается успешно, загрузите веб-представление.

РЕДАКТИРОВАТЬ: добавлен пример использования NSURLConnection для проверки, если HTTPauth успешно

Хорошо, вот простой пример.Вы можете сделать это лучше, разрешив NSURLConnection загрузить намеченный вами запрос и, если это удастся, загрузить данные ответа в webView против инициации нового запроса.Прочтите документацию по системе загрузки URL, чтобы узнать больше о том, как использовать NSURLConnection.

. В своем делегате webView инициируйте NSURLConnection с запросом к тому же домену, что и запрос webView сучетные данные пользователя:

- (void)performHTTPAuthRequest
{
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://%@:%@@test.starsightings.com", username, password]]];
    NSURLConnection *connection = [NSURLConnection connectionWithRequest:request delegate:self];
}

// if the request succeeds, credentials must be good so load the webView
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    // request completed successfully so username/password must be good
    [self.webView loadRequest:theRequest];
}

// ignore the failure
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
}

// if we get an auth challenge, the credentials are bad so cancel the request and alert the user
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{
    [[challenge sender] cancelAuthenticationChallenge:challenge];
    // alert user that username/pwd is invalid
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...