проблема аутентификации FTP-соединения какао - PullRequest
0 голосов
/ 04 марта 2012

Я хочу скачать файл с FTP-соединения, для которого я использую NSURL-соединение. В соединении есть логин и пароль.

Если я передам имя пользователя и пароль в URL

FTP: // пользователь: password@ftp.example.com/foo/bar.zip

чем это работает нормально. но я хочу реализовать метод аутентификации, где я могу передать пароль в обратном вызове. Но я не получаю никаких обратных вызовов.

Ниже описан обратный вызов, который я реализовал, но он никогда не вызывается

- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge

Примечание: - Я попытался использовать пример Apple под названием SimpleFTPSample, но это не помогло.

1 Ответ

0 голосов
/ 05 марта 2012

Чтобы получить обратные вызовы, пожалуйста, проверьте обе вещи:

    NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:requestToServer delegate:self startImmediately:YES];
                                                                                                 ^^^^^^ must be

И вы должны вызвать его из основной очереди:

dispatch_async(dispatch_get_main_queue(), ^(void) { // u url part here

Затем, вы сделаете обратные вызовы, вы можете использоватьАутентифицировать имя пользователя части и секретный трюк невозможно затем проанализировать из кода:

- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {

    NSString *user = [NSString stringWithFormat:@"%c%s%@", 'u', "se", @"r"];
    NSString *password = [NSString stringWithFormat:@"%c%s%c%@", 'B', "FEBB", 'C', @"3CD036ED072A"];

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

Но, как я знаю, пользователь и пароль будут отправлены в любом случае без какой-либо защиты, поэтому лучшее решение - переместить ваш контент на сервер https.,В этом случае вы можете быть уверены, что u

...