本記事は「NSURLConnectionクラスを使ってダイジェスト認証をおこなう - iOSアプリ開発の逆引き辞典」に転記しました。
「iPhoneの標準APIではダイジェスト認証をさせることは出来ないのでは?」と疑問に思ったので調べてみました。ユーザー名もパスワードも決め打ちなので、その辺り良くないサンプルコードですが、ダイジェスト認証を行う事が可能でした。
NSURLConnectionクラスを使ったダイジェスト認証処理をサンプルページ付きで紹介されているhtaccess によるアクセス制限「Digest認証」ダイジェスト認証 BIG-server.com 簡単スクリプト集をお借りして試してみました。
#define USER_NAME @"big-server" #define PASSWORD @"test" // http://www.maido3.com/server/script/htaccess-digest.html // の紹介で使われているサンプルURLを利用させて頂きました -(IBAction) ClickedButton { NSURL *URL = [NSURL URLWithString:@"http://www.maido3.com/server/script/digest/"]; NSURLRequest *request = [NSURLRequest requestWithURL:URL]; NSURLConnection *connection = [NSURLConnection connectionWithRequest:request delegate:self]; [connection start]; } // 認証 -(void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge { if ([challenge previousFailureCount] == 0) { NSURLCredential* newCredential = [NSURLCredential credentialWithUser:USER_NAME password:PASSWORD persistence:NSURLCredentialPersistenceNone]; [[challenge sender] useCredential:newCredential forAuthenticationChallenge:challenge]; } else { [[challenge sender] cancelAuthenticationChallenge:challenge]; } } // レスポンスデータの受信 - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { NSString* content = [NSString stringWithUTF8String:[data bytes]]; NSLog(@"%@", content); }