Я обрабатываю регистрационную форму, и мне нужно использовать безопасный запрос 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);
}
Я это понимаю. Каждый раз я тестирую другой адрес электронной почты. Проблема заключается в 'sendSynchronousRequest'. @eik –
Вы получаете идеальный объект JSON, поэтому NSURLConnection не является завершением. OTOH для меня «пользователь с этим письмом уже существует» звучит подозрительно, как сообщение сервера. – eik
Это правильно. Когда я регистрирую электронное письмо без безопасного POST, я не получаю сообщение сервера. Когда я регистрируюсь в безопасном POST, я всегда получаю сообщение сервера; независимо от того, какую электронную почту я использую. - @eik –