авторизация прокси на симуляторе iPhone - PullRequest
0 голосов
/ 07 марта 2011

Возникла такая проблема, надеюсь, ты мне поможешь .. Нигде не могу найти. Вот код, который я использую:

NSURL *serverURL = [NSURL URLWithString:@"http://someServer.com/Login"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:serverURL];
[request addValue:@"text/plain" forHTTPHeaderField:@"ACCEPT"];
[request setHTTPMethod:@"POST"];

[request setCachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData];

NSData *data = [encodedString dataUsingEncoding:NSUTF8StringEncoding];
[request setHTTPBody:data];

URLLoader *loader = [URLLoader loaderWithRequest:request];

Когда я хочу получить доступ к серверу http://someServer.com/Login из браузера на компьютере, все ок.

Когда я пытался получить доступ к тому же серверу из safary на симуляторе iPhone - после авторизации появляется окно авторизации.

Но когда я выполняю этот запрос программным способом на симуляторе iPhone, пример кода я выложил. Появляется следующая ошибка:

The following error was encountered:
Cache Access Denied.

Sorry, you are not currently allowed to request:
   http://someserver.com/Login
from this cache until you have authenticated yourself.

Как я могу решить эту проблему ?? Thanx!

1 Ответ

1 голос
/ 07 марта 2011

кажется, что вам нужно отправить учетные данные аутентификации, когда вы делаете вызов. Попробуйте использовать NSURLConnection класс, чтобы сделать вызов, установить делегат и реализовать следующий метод

-(void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge{
    if ([challenge previousFailureCount] == 0) {
        NSURLCredential *newCredential;
        newCredential=[NSURLCredential credentialWithUser:@"ABC"
                                                 password:@"XYZ"
                                              persistence:NSURLCredentialPersistenceNone];
        [[challenge sender] useCredential:newCredential
               forAuthenticationChallenge:challenge];

    } else {

        [[challenge sender] cancelAuthenticationChallenge:challenge];
        // inform the user that the user name and password
        // in the preferences are incorrect
    }

}
...