Аутентификация для служб REST из приложения IOS - PullRequest
0 голосов
/ 12 октября 2011

У меня есть служба отдыха, (URL-адрес службы является фиктивным и не работает)

http://www.testDomain.com/authenticate/

, который является аутентифицированным именем пользователя и паролем

как мне вызвать эту службу отдыха из моего приложения?

Ниже приведен код, который я написал для использования этой службы REST (ранее эта служба не была аутентифицирована по имени пользователя и паролю).

NSString * testUrl = @ "http://www.testDomain.com/authenticate/";

        //NSString *testUrl=@"http://www.testDomain.com/authenticate/";

        NSMutableURLRequest *request=[[[NSMutableURLRequest alloc]init]autorelease];
        [request setHTTPMethod:@"POST"];
        [request setURL:[NSURL URLWithString:testUrl]];
        [request setValue:@"application/xml" forHTTPHeaderField:@"Content-Type"];
        [request setValue:@"application/json" forHTTPHeaderField:@"Accept"];

        //[request addValue:<#(NSString *)value#> forHTTPHeaderField:<#(NSString *)field#>]
        [request setHTTPBody:bodyData];

1 Ответ

1 голос
/ 12 октября 2011

У вас есть два способа: необеспеченный: запросить у пользователя имя пользователя, передать и отправить URL как http://username:pass@....

делегат поддержки NSUrlConnection:

- (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace {
    return YES;
}

- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {
    NSString *user = [NSString stringWithFormat:@"%c%s%@", 'a', "a", @"a"];
    NSString *password = [NSString stringWithFormat:@"%c%s%@", 'a', "a", @"a"];

    NSURLCredential *credential = [NSURLCredential credentialWithUser:user
                                                             password:password
                                                          persistence:NSURLCredentialPersistenceForSession];
    [[challenge sender] useCredential:credential forAuthenticationChallenge:challenge];

}

для вас лучше использовать первый способ, bcd u в любом случае не защищайте ссылку с помощью ssl, и кто-нибудь умный сможет прослушать все ваши пользователи и пароли :) постскриптум интересные строки защищают от чтения логин / пароль от кода ...

...