2010-11-05 2 views
1

Мой NSMutableURLRequest отправляет строки дважды PHP. Что я делаю не так?NSMutableURLRequest отправка дважды

- (void)viewDidLoad { 

// Printando os Dados 

///// 

NSString *endereco = [[NSString alloc] initWithFormat:@"%@ - CEP: %@", self.sharedData.dataEndereco, self.sharedData.dataCEP]; 


NSMutableURLRequest *request = 
[[NSMutableURLRequest alloc] initWithURL: 
[NSURL URLWithString:@"http://localhost/dev/mcomm/pedido.php"]]; 
NSLog(@"ENVI"); 

[request setHTTPMethod:@"POST"]; 
NSString *postString = [[NSString alloc] initWithFormat:@"nome=%@&email=%@&endereco=%@&produto=%@&marca=%@&preco=%@&codigo=%@&variacao=%@&parcelas=%@&valorParcelas=%@&cartao=%@&numCartao=%@&codCartao=%@&vencCartao=%@&nomeCartao=%@", self.sharedData.dataNome, self.sharedData.dataEmail, endereco, self.sharedData.dataProd, self.sharedData.dataMarca, self.sharedData.dataPreco, self.sharedData.dataCodigo, self.sharedData.dataVariacao, self.sharedData.numParcelas, self.sharedData.valorParcelas, self.sharedData.cartao, self.sharedData.numeroCartao, self.sharedData.codigoCartao, self.sharedData.dataVencimento, self.sharedData.nomeImpressoCartao]; 

[request setValue:[NSString 
        stringWithFormat:@"%d", [postString length]] 
forHTTPHeaderField:@"Content-length"]; 

[request setHTTPBody:[postString 
         dataUsingEncoding:NSUTF8StringEncoding]]; 

[[NSURLConnection alloc] 
initWithRequest:request delegate:self]; 

[UIApplication sharedApplication].networkActivityIndicatorVisible = YES; 
[loaderAtividade startAnimating]; 


//get response 
NSHTTPURLResponse* urlResponse = nil; 
NSError *error = [[NSError alloc] init]; 
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error]; 
NSString *result = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; 

ответ

3

Первый запрос инициируется:

[[NSURLConnection alloc] initWithRequest:request delegate:self]; 

И второй передается с помощью функции:

[NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error]; 

слово предостережения, от apple documentation о sendSynchronous:

Важно: поскольку этот вызов может занять несколько минут (особенно при использовании сотовой сети в iOS), вы никогда не должны вызывать эту функцию из основного потока приложения GUI.

Вы должны реализовать протокол делегатов NSURLConnection и не отправлять синхронный запрос.

0

В дополнение к ответу Даниила, вы можете предотвратить первый запрос от стрельбы по реализации initWithRequest: Делегат: startImmediately: БЕЗ

NSURLConnection *urlConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:NO]; 

потом, когда вы хотите, чтобы начать свой асинхронный запрос, вы просто позвоните -start на объекте подключения

[urlConnection start]; 
Смежные вопросы