2010-03-07 8 views
1

J'ai une application iPhone qui est censée envoyer des données POST à ​​mon serveur pour enregistrer l'appareil dans une base de données MySQL afin que nous puissions y envoyer des notifications etc .... Il envoie son identifiant unique, son nom de périphérique, son jeton, et quelques autres petites choses comme des mots de passe et des noms d'utilisateur comme une requête POST à ​​notre serveur. Le problème est que parfois le serveur ne reçoit pas les données. Et par là je veux dire, ce n'est pas juste de recevoir des valeurs vierges pour les entrées POST, mais de ne recevoir AUCUNE donnée de publication. Je consignation toutes les entrées POST à ​​mon serveur dans certains fichiers journaux et lorsque le script qui repose sur les données POST du périphérique échoue (ne détecte aucune donnée), je remarque que c'est parce que les données NO POST ont été envoyées. Est-ce un problème sur le serveur, comme refuser des données ou quelque chose ou cela doit-il être du côté du client? Qu'est-ce qui peut causer cela?Les données POST ne sont pas reçues de l'iPhone

iPhone code:

NSString *post = [NSString stringWithFormat:@"deviceIdentifier=%@&deviceToken=%@",deviceIdentifier,deviceToken]; 
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:NO]; 
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]]; 
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease]; 
[request setURL:[NSURL URLWithString:@"http://website.com/RegisterScript.php"]]; 
[request setHTTPMethod:@"POST"]; 
[request setValue:postLength forHTTPHeaderField:@"Content-Length"]; 
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
[request setValue:@"MyApp-V1.0" forHTTPHeaderField:@"User-Agent"]; 
[request setHTTPBody:postData]; 
NSData *urlData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; 
NSString *response = [[NSString alloc] initWithData:urlData encoding:NSASCIIStringEncoding]; 

Répondre

1

Je recommande d'utiliser ASIHTTPRequest qui est un excellent cadre pour communiquer sur http. Il va gérer la communication asynchrone de sorte que vous ne risquez pas l'application étant arrêtée par l'iPhone OS si la communication prend trop de temps. Il existe également des méthodes pour créer plus facilement les données de formulaire à envoyer.

Questions connexes