envoyer un fichier en post a un WS via l'iphone
guittonews
Membre
Re-bonjour à ceux que j'ai déjà croisé aujourd'hui, bonjour aux autres
Voilà tout est dans le titre...je pense que je ne procède pas de la bonne manière. En effet mon serveur me renvoi un message me disant qu'il ne récupère aucun fichier...
voici mon source (grandement inspiré de bout de code trouvé sur ce forum )
Ma variable speedsmosXML est une chaine de caractere XML...
Je pense que je m'y prend mal parce que au final c'est pas un fichier que j'envoi la...comment faire? des pistes? idées? exemples? je prends merciiii
Voilà tout est dans le titre...je pense que je ne procède pas de la bonne manière. En effet mon serveur me renvoi un message me disant qu'il ne récupère aucun fichier...
voici mon source (grandement inspiré de bout de code trouvé sur ce forum )
<br /><br />NSMutableString *httpBodyString=[[NSMutableString alloc] initWithFormat:@"xml=%@",speedsmosXML];<br /> NSMutableString *urlString=[[NSMutableString alloc] initWithString:@"http://*******/rest/******/detail"];<br /> NSURL *url=[[NSURL alloc] initWithString:urlString];<br /> [urlString release];<br /> <br /> NSMutableURLRequest *urlRequest=[NSMutableURLRequest requestWithURL:url];<br /> [url release];<br /> [urlRequest setHTTPMethod:@"POST"];<br /> [urlRequest setHTTPBody:[httpBodyString dataUsingEncoding:NSUTF8StringEncoding]];<br /> [httpBodyString release];<br /> <br /> NSURLResponse *response = nil;<br /> NSError *err = nil;<br /> NSData *result = [NSURLConnection sendSynchronousRequest: urlRequest returningResponse:&response error:&err];<br /> <br /> NSLog(@"%@",[[NSString alloc] initWithData:result encoding:NSUTF8StringEncoding]);<br /><br />
Ma variable speedsmosXML est une chaine de caractere XML...
Je pense que je m'y prend mal parce que au final c'est pas un fichier que j'envoi la...comment faire? des pistes? idées? exemples? je prends merciiii
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Il te manque donc :
1) Encoder ta chaà®ne speedsmosXML avec la méthode stirngByAddingPercentEscapesUsingEncoding (de mémoire, cf la doc NSString), qui va encoder ton XML pour qu'il puisse passer dans une requête web (par exemple remplacer les espaces par des %20, échapper les caractères "&" que tu peux avoir dans ton XML qui en POST ont une autre signification puisqu'ils servent à séparer les différentes variables passées...)
2) Ajouter le bon Content-Type en header, de mémoire c'est qqch comme "application/x-www-form-urlencoded" pour indiquer que les données que tu envoies sont au format urlencoded c'est à dire "var1=data1&var2=data2&var3=data3..." (en l'occurence pour toi juste "xml=dataXML")
Tiens je me demande (à fouiller dans la doc aussi) si y'a pas une méthode de NSDictionary pour construire directement la chaà®ne URL-Encoded correspondant au contenu du NSDictionary... du style tu crées un NSDictionary avec la clé "xml" et en valeur ta NSString contenant ton XML brut... et il se débrouille pour te transformer ça en "xml=" suivi de la valeur de la clé "xml"... mais url-encodée comme il faut ? Ca me semblerait somme toute logique comme utilisation donc à voir si Apple n'a pas prévu une méthode pour ça.
J'avais reglé le problème du header entre temps. Le tout combiné à un petit problème coté WS et now ca marche
merkii