HTTP-аутентификация с использованием какао - PullRequest
1 голос
/ 06 марта 2012

Используя приведенный ниже код, я пытаюсь получить результат, который должен быть как успех или что-то еще. Но в моем значении результата я ничего не получаю, оно пустое.

В чем может быть проблема?

- (IBAction)login:(id)sender {

    NSString *user = [userName stringValue];
    NSString *passwd = [passwordField stringValue];

    NSLog(@"username:::password::: %@ %@", user, passwd);


    NSURL *url = [NSURL URLWithString:@"http://myurl.html?userName=%@&userPassword=%@"];

    NSError *myError = nil;

    // create a plaintext string in the format username:password
    NSMutableString *loginString = (NSMutableString*)[@"" stringByAppendingFormat:@"%@:%@", user, passwd];

    NSString* encodedString = [[loginString dataUsingEncoding:NSUTF8StringEncoding] base64EncodedString];

    // create the contents of the header 
    NSString *authHeader = [@"Basic " stringByAppendingFormat:@"%@", encodedString];

    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: url
                                                           cachePolicy: NSURLRequestReloadIgnoringCacheData  
                                                       timeoutInterval: 3];   

    [request setHTTPMethod:@"POST"];

    // add the header to the request.  Here's the $$$!!!
  //  [request addValue:authHeader forHTTPHeaderField:@"Authorization"];

    [request addValue:user forHTTPHeaderField:@"userName" ];
    [request addValue:passwd forHTTPHeaderField:@"userPassword" ];

    // perform the reqeust
    NSURLResponse *response;

    NSData *data = [NSURLConnection  
                    sendSynchronousRequest: request  
                    returningResponse: &response  
                    error: &myError];  
  //  *error = myError;

    //the content of the webserver's response.
    NSString *result = [NSString stringWithCString:[data bytes] length:[data length]];

    NSLog(@"result: %@", result);

}

Любая помощь, пожалуйста.

1 Ответ

2 голосов
/ 06 марта 2012

Для вашего URL:

NSURL *url = [NSURL URLWithString:@"http://myurl.html?userName=%@&userPassword=%@"];

Это не правильно.

Вам не нужно добавлять сюда пользователя и пароль?Что-то вроде:

NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://myurl.html?userName=%@&userPassword=%@", user, passwd];

И .. почему вы создаете такие строки?Вместо:

NSString *authHeader = [@"Basic " stringByAppendingFormat:@"%@", encodedString];

Вы должны сделать:

NSString *authHeader =[NSString stringWithFormat:@"Basic %@", encodedString];

Я действительно думаю, что ваша проблема в строках, которые вы создаете, проверьте их все

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...