2013-08-28 1 views
0

Я обрабатываю регистрационную форму, и мне нужно использовать безопасный запрос POST.sendSynchronousRequest регистрирует пользователя перед ответом JSON

Если я просто использую NSJSONSerialization с переменной data, он отлично работает. Нет ошибок.

Проблема заключается в том, что, когда я называю sendSynchronousRequest и попытаться вызвать NSJSONSerialization на переменную secureData, то registrationError говорит «пользователь с, что электронная почта уже существует».

Как этого избежать?

Вот код, у меня есть:

NSData *data = [NSData dataWithContentsOfURL:registrationURL]; 

NSMutableURLRequest *postRequest = [NSMutableURLRequest requestWithURL:registrationURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:30]; 

[postRequest setHTTPMethod:@"POST"]; 
[postRequest setValue:@"application/json" forHTTPHeaderField:@"Accept"]; 
[postRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
[postRequest setValue:[NSString stringWithFormat:@"%d", data.length] forHTTPHeaderField:@"Content-Length"]; 
[postRequest setHTTPBody:data]; 

NSURLResponse *response; 
NSError *error; 
NSData *secureData = [NSURLConnection sendSynchronousRequest:postRequest returningResponse:&response error:&error]; 

NSLog (@"%@", error); 

if (secureData != nil) 
{ 
    NSDictionary* json = [NSJSONSerialization JSONObjectWithData:secureData options:kNilOptions error:&error]; 
    NSString *registrationError = [json objectForKey:@"error"]; 

    NSLog(@"%@", registrationError); 
} 

EDIT: Вот код без POST, что делает работу:

NSData *data = [NSData dataWithContentsOfURL:registrationURL]; 

if (data != nil) 
{ 
    NSDictionary* json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error]; 
    NSString *registrationError = [json objectForKey:@"error"]; 

    NSLog(@"%@", registrationError); 
} 

ответ

0

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

+0

Я это понимаю. Каждый раз я тестирую другой адрес электронной почты. Проблема заключается в 'sendSynchronousRequest'. @eik –

+0

Вы получаете идеальный объект JSON, поэтому NSURLConnection не является завершением. OTOH для меня «пользователь с этим письмом уже существует» звучит подозрительно, как сообщение сервера. – eik

+0

Это правильно. Когда я регистрирую электронное письмо без безопасного POST, я не получаю сообщение сервера. Когда я регистрируюсь в безопасном POST, я всегда получаю сообщение сервера; независимо от того, какую электронную почту я использую. - @eik –

Смежные вопросы