Utilisation de NSURLRequest pour transmettre des paires clé-valeur au script PHP avec POST
Je suis assez nouveau à l'objective-c, et je cherche à passer un certain nombre de paires clé-valeur à un script PHP à l'aide de POST. Je suis en utilisant le code suivant, mais les données ne semble pas être diffusées par l'intermédiaire d'. J'ai essayé d'envoyer des choses par le biais de l'aide NSData en tant que bien, mais ils ne semblent être de travail.
NSDictionary* data = [NSDictionary dictionaryWithObjectsAndKeys:
@"bob", @"sender",
@"aaron", @"rcpt",
@"hi there", @"message",
nil];
NSURL *url = [NSURL URLWithString:@"http://myserver.com/script.php"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:[NSData dataWithBytes:data length:[data count]]];
NSURLResponse *response;
NSError *err;
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err];
NSLog(@"responseData: %@", content);
Cet envoi de ce script simple pour effectuer une db insérer:
<?php $sender = $_POST['sender'];
$rcpt = $_POST['rcpt'];
$message = $_POST['message'];
//script variables
include ("vars.php");
$con = mysql_connect($host, $user, $pass);
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("mydb", $con);
mysql_query("INSERT INTO php_test (SENDER, RCPT, MESSAGE)
VALUES ($sender, $rcpt, $message)");
echo "complete"
?>
Des idées?
source d'informationauteur Ralf Mclaren
Vous devez vous connecter pour publier un commentaire.
Merci pour les suggestions de tout le monde. En fin de compte j'ai réussi à résoudre le problème en utilisant des trucs donné ici.
Code:
C'est faux:
La longueur doit être exprimée en octets, pas en nombre de caractères UTF8.
Au lieu de cette ligne, vous devez utiliser:
Cette ligne
[request setHTTPBody:[NSData dataWithBytes:data length:[data count]]];
ressemble de manière erronée pour moi.Je pense que vous voulez:
[request setAllHTTPHeaderFields:data];
Deuxièmement, vous trouverez le Cacao cadre met en majuscule la première lettre de vos noms de champ avant de les envoyer (ennuyée). Vous pourriez avoir à faire quelques changements pour faire face à cela.
Si vous allez faire beaucoup de la forme de poster, je vous recommande de sauter NSURLRequest et à l'aide de ASIHTTPRequest à la place. À mon humble avis, il est bien documenté et propose une façon simple d'interagir avec les services web.
Cela fonctionne sur IOS 5.o pour la Publication de formulaires et de l'obtention des Données:
Merci & Cordialement,
Arun Dhwaj
Modifier: A été corrigé dans OP.
Cela peut ne pas être votre seul problème (je ne sais pas mon chemin autour de l'objectif-c), mais va ici:
Vous n'êtes pas de devis en joignant votre cordes - MySQL est lié à avoir un hissy fit plus que.
Au-delà, de manière générale, même si votre script n'est pas accessible de l'extérieur, ne vous fiez pas à la saisie de l'utilisateur et utiliser
mysql_real_escape_string()
pour échapper à vos valeurs avant de les insérer dans l'instruction SQL pour empêcher l'injection SQL, ou de l'utilisation les requêtes préparées (de préférence) - sinon des guillemets simples dans votre légitime de données briser l'instruction SQL de la syntaxe.Totalement disgracieux exemple de référence: