UIWebViewでダイジェスト認証したい場合、NSURLProtectionSpaceというのを使うらしい。
URLにIDPASSを含んでもいいんだけど、何らかの理由で含められない場合。
AppDelegateの頭とかで呼べば、以降のUIWebViewの認証が通る(?)ようです。
authenticationMethod
にNSURLAuthenticationMethodHTTPDigest
を指定。
AppDelegate.m
#define DIGEST_USER_NAME = @"yourname";
#define DIGEST_PASSWORD = @"yourpassword";
#define DIGEST_HOST = @"www.hoge.jp"
// realmは、「curl -Iv http://www.hoge.jp/fuga/piyo」等で調べられる
#define DIGEST_REALM = @"Input ID and Password"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//------------------------------------
// ダイジェスト認証
//------------------------------------
NSURLCredential *creds = [NSURLCredential
credentialWithUser:DIGEST_USER_NAME password:DIGEST_PASSWORD
persistence:NSURLCredentialPersistenceForSession];
NSURLCredentialStorage* store = [NSURLCredentialStorage sharedCredentialStorage];
NSURLProtectionSpace* protectionSpace = [[NSURLProtectionSpace alloc] initWithHost:DIGEST_HOST
port:80
protocol:@"http"
realm:DIGEST_REALM
authenticationMethod:NSURLAuthenticationMethodHTTPDigest];
[store setCredential:creds forProtectionSpace:protectionSpace];
return YES;
}
##参考
やっと人類の悲願だった「UIWebView でBasic 認証のかかったサイトを閲覧する方法」がわかった - laiso - iPhoneアプリ開発グループ
##さいごに
なにか間違いがありましたらご指摘いただけるとありがたいです