あなたが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
}
は、サーバによって強制このパスワード要件ですか?その場合、応答には処理し、アプリユーザーに適切なエラーを表示するための適切なエラーが含まれている必要があります。 – XJones
いいえ、パスワードはサーバに次のように送信されます: http:// username:[email protected] 私のMacウェブブラウザに間違ったユーザ名/パスワードを入力した場合、これは私のためには動作しませんので、私は 'タイマー'のようなものを持っていた – user1110365