iPhone, l'envoi de courrier avec NSURLConnection
Je vais avoir quelques problèmes avec l'envoi de l'envoi de données à un script PHP avec NSURLConnection. C'est mon code:
const char *bytes = [[NSString stringWithFormat:@"<?xml version=\"1.0\"?>\n<mydata>%@</mydata>", data] UTF8String];
NSURL *url = [NSURL URLWithString:@"http://myurl.com/script.php"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:[NSData dataWithBytes:bytes length:strlen(bytes)]];
NSURLResponse *response;
NSError *err;
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err];
NSLog(@"responseData: %@", responseData);
Et mon script.php est aussi simple que cela:
<?php
echo $_POST['mydata'];
?>
Cela a fonctionné pour moi dans le passé, mais pour une raison quelconque, la sortie que je reçois de NSLog(@"responseData: %@", responseData);
, c'est de "<>" au lieu de "theData".
Probablement certains boiteux erreur quelque part mais je n'arrive pas à le trouver? Des idées?
Vous devez vous connecter pour publier un commentaire.
Vos données est incorrect. Si vous pensez que les données disponibles dans la $_POST tableau de PHP, il devrait ressembler à ceci:
Si vous souhaitez envoyer des Données XML, vous devez définir un autre HTTP Content-Type. E. g. vous pouvez définir
Si vous ne définissez pas de HTTP de Type de Contenu, le type par défaut
sera utilisé. Et ce type s'attend que les données posté pour avoir le même format qu'il aurait dans une requête GET.
Toutefois, si vous définissez une autre adresse HTTP de Type de Contenu, comme application/xml, puis ces données ne sont pas ajoutées à l' $_POST tableau en PHP. Vous devez lire le raw à partir du flux d'entrée.
Essayez ceci:
et sur le serveur, essayez les opérations suivantes PHP:
Veuillez noter que cela ne fonctionne que si l'en-tête HTTP de votre POST n'est pas d'application/x-www-form-urlencoded. Si c'est l'application/x-www-form-urlencoded puis PHP lui-même lit toutes les données post, le décode (fractionnement en paires clé/valeur), et enfin il ajoute à l' $_POST tableau.
c'est parce que vous êtes en montrant les "octets" les valeurs que vous devriez passer à NSString pour voir le vrai message
Publier des données et des données XML ne sont pas les mêmes. Vous pouvez envoyer des données XML comme vous l'avez fait, mais le code PHP doit analyser le document XML à partir du corps de la requête. PHP xml_parse (http://php.net/manual/en/function.xml-parse.php) peut vous aider à le faire.
Alternativement, si vous préférez l'envoi de publier des données, définir le corps de la requête comme ceci:
const char *bytes = [[NSString stringWithFormat:@"mydata=%@", data] UTF8String];
Si vous utilisez NSURLSession puis dans iOS9 ensemble
En installation de PHP
Dans la db (MySql5) défini utf-8_generic.