Problema ao usar NSURLRequest para enviar dados POST para o servidor

Eu crio um NSURLRequest para postar meus dados no aplicativo do iPhone em um servidor para continuar o script PHP. Meu script PHP é parecido com isto.

  

e meu NSURLRequst é criado como abaixo.

 NSString *myRequestString = @"&name=Hello%20World&email=Ohai2u"; NSData *myRequestData = [NSData dataWithBytes: [myRequestString UTF8String] length: [myRequestString length]]; NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL: [NSURL URLWithString: @"http://www.google.com/"]]; [request setHTTPMethod: @"POST"]; [request setHTTPBody: myRequestData]; NSData *returnData = [NSURLConnection sendSynchronousRequest: request returningResponse: nil error: nil]; 

No entanto, este site não consegue obter os dados deste aplicativo e salvá-lo no database, mas sei que ele foi conectado de forma sucinta porque meu aplicativo é capaz de obter os dados de resposta do servidor. Não sei se meu nome de variável é declarado de maneira errada ou outros problemas. Como posso consertar isso?

Você deve remover o líder & em myRequestString e o problema é que o header do content-type correto não esteja sendo enviado. Tente adicionar uma chamada a

 [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"]; 

Você também não deve passar por erro, assim você pode ver o que o cliente acha que está acontecendo.

Não relacionado, mas seu código PHP está aberto a ataques de injeção de SQL .

Deve notar-se que …

 NSData *data = [NSData dataWithBytes: [myRequestString UTF8String] length: [myRequestString length]]; 

… é muito ruim e pode causar erros vagos. Com o UTF8, não há garantia de que o número de bytes na sua string codificada seja o mesmo que o número de caracteres na sua string.

Então, você deve simplesmente usar:

 NSData *data = [myRequestString dataUsingEncoding: NSUTF8StringEncoding]; 

tente isso

 NSString *name = [[NSString alloc]initWith String: @"Hello World"]; NSString *email = [[NSString alloc]initWith String: @"Ohai2u"]; NSString *urlString = [NSString stringWithFormat:@"http://somedomain.com/sendMail.php?name=%@&email=%@", [name stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding], [email stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; NSURL *url = [[NSURL alloc] initWithString:urlString]; NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url]; NSData *urlData; NSURLResponse *response; urlData = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&response error:nil]; [url release]; 

apenas não se esqueça de liberar as cordas

definir os headers no script PHP