2011-12-21 17 views
0

質問があります。私のアプリケーションでは、Webコンテンツを表示するには接続とWebviewが必要です。 問題は、接続するために必要なユーザー名とパスワードがあることです。今私は、ユーザー名が間違っている場合に警告が表示されるようにしたい。ユーザ名またはパスワードが間違っている場合、それは(それが何も表示されませんが)のロードを継続していきますので、webViewと 'timeout'

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

は、このために動作しません。

時間を設定してアラートを表示するには、webviewに「通知する」可能性はありますか?

大変ありがとうございます!

+0

は、サーバによって強制このパスワード要件ですか?その場合、応答には処理し、アプリユーザーに適切なエラーを表示するための適切なエラーが含まれている必要があります。 – XJones

+0

いいえ、パスワードはサーバに次のように送信されます: http:// username:[email protected] 私のMacウェブブラウザに間違ったユーザ名/パスワードを入力した場合、これは私のためには動作しませんので、私は 'タイマー'のようなものを持っていた – user1110365

答えて

0

あなたがHTTP認証(上記のコメントに基づいて)であなたのサーバーで認証しているなら、私はこれを別の方法で行います。ユーザーがユーザー名/パスワードを入力すると、NSURLConnectionを使用して任意のページ(軽量)にリクエストを行います。ユーザー名/パスワードが間違っている場合は、NSURLConnectionDelegateメソッドの失敗を処理し、ユーザーに新しいユーザー名/パスワードの入力を求めることができます。

デリゲートの代わりにNSURLConnectionのiOS 5バージョンでもこれを行うことができますが、ドキュメントはあまり良くありません。

この最初のリクエストが成功すると、Webビューを読み込みます。

EDIT:HTTPの認証がOK

を成功するかどうかを確認するためにNSURLConnectionを使っての追加例は、ここでは簡単な例です。 NSURLConnectionに目的の要求をロードさせ、応答データをwebViewにロードして新しい要求を開始した場合は、これを改善することができます。 NSURLConnectionの使用方法の詳細については、URL読み込みシステムのドキュメントをご覧ください。あなたのwebViewデリゲートで

、次のようにユーザーの資格情報を使用してwebView要求と同じドメインに要求してNSURLConnectionを開始:

- (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 
} 
+0

大丈夫、あなたはそれを行う方法を説明することはできますか?私はそれを理解していないので:( – user1110365

+0

した。それほど悪くない。 – XJones

+0

ありがとう:)私はそれを今得た! – user1110365