0

現在、iPhone アプリで URL から画像を読み込んでいますが、正常に動作しています。しかし、今は保護された URL にアクセスしたいと思っています。資格情報 (ユーザー名/パスワード) を使用して URL にアクセスする方法を示すコードを教えてください。

私のアプリがURLから画像をロードした簡単なコードを以下に示します

    NSURL *url = [NSURL URLWithString: @"http://www.somedirectory.com"];
    UIImage *image = [UIImage imageWithData: [NSData dataWithContentsOfURL:url]]; 
    [Pic setImage:image];
4

2 に答える 2

1

Look For these two callbacks

- (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace
{
    // IF to handle NTLM authentication.
    if([[protectionSpace authenticationMethod] isEqualToString:NSURLAuthenticationMethodNTLM])
        return YES;  

    // Mostly sent by IIS. 
    if([[protectionSpace authenticationMethod] isEqualToString:NSURLAuthenticationMethodServerTrust])
        return YES;

    return NO;
}


- (void) connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge*)challenge 
{   
    if ([[[challenge protectionSpace] authenticationMethod] isEqual:NSURLAuthenticationMethodNTLM]) 
    {
        [[challenge sender]  useCredential:[NSURLCredential 
                                                credentialWithUser:Username 
                                                password:password
                                                persistence:NSURLCredentialPersistenceNone]
                    forAuthenticationChallenge:challenge];
    } 
    else if ([[[challenge protectionSpace] authenticationMethod] isEqual:NSURLAuthenticationMethodServerTrust])
    {
          [[challenge sender]  useCredential:[NSURLCredential 
                                                credentialWithUser:Username  
                                                password:password 
                                                persistence:NSURLCredentialPersistenceNone]
                    forAuthenticationChallenge:challenge];
    } 
    else 
    {  
        [challenge.sender continueWithoutCredentialForAuthenticationChallenge:challenge];
    }
}
于 2012-05-21T11:43:25.463 に答える
0

ASIHTTPRequestのようなサードパーティのライブラリを使用すると、非常に簡単になります。

NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com/top_secret/"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setUsername:@"username"];
[request setPassword:@"password"];

またはNSURLConnection、クラスを使用することもできますが、認証の実装には少し注意が必要です。

于 2012-05-21T11:45:45.890 に答える