Ecrire un NSArray sur une url

al33eral33er Membre
06:01 modifié dans API UIKit #1
Bonjour,

Voilà , j'ai une application qui permet de charge un NSArray à  la main via 4 écrans. Je voudrais savoir comment on fait pour écrire cet array via la comment  writeToUrl dans répertoire en ligne.

En fait, je voudrais savoir quel type de répertoire ( je connais le répertoire accessible via FTP, mais le reste non).

J'ai essayé par la commande suivante :
BOOL Rep = [ListRadios writeToURL:[NSURL URLWithString:@"http://pagesperso-orange.fr/alexandre.pestre/Liste.plist"] atomically:YES];

Mais Rep = NO en retour.

Je suis un peu perdu.

Alexandre.

Réponses

  • AliGatorAliGator Membre, Modérateur
    06:01 modifié #2
    On ne peux pas écrire sur une URL internet via HTTP ! (Bon à  moins d'avoir un serveur WebDav de l'autre côté, mais il me semble évident que c'est loin d'être ton cas et inutile de rentrer dans les explications de ce que c'est vu que c'est pas trop la solution pour toi)

    Le protocole HTTP permet de récupérer des données en passant une URL. Quand tu as une URL "http://toto.com/index.html"; ça demande la page index.html du serveur toto.com via le protocole HTTP. Le serveur te renvoie la page, et toi tu la lis. Mais tu ne peux pas écrire de fichier sur le serveur HTTP comme ça comme si tu écrivais un fichier sur ton disque dur.

    Encore heureux d'ailleurs, sinon n'importe qui pourrait mettre n'importe quoi comme fichier dans ton répertoire de pages persos, tu imagines ?

    Il existe des méthodes pour contourner cela.
    - la première, passer par FTP qui lui est un protocole pour l'échange de fichiers, permettant donc de télécharger mais aussi d'envoyer des fichiers au serveur... mais ce n'est pas la même utilisation que HTTP, là  faut envoyer des commandes pour dire d'écrire, etc... on demande pas juste une URL, après faut "parler" au serveur pour lui dire ce qu'on veut faire...
    - la seconde, prévoir un petit script PHP à  qui tu envoies tes données en mode "POST" (protocole HTTP). Le script PHP, qui, lui, tourne sur le serveur, va lire ces données POST, et se charger de les stocker dans un fichier sur le serveur.

    C'est à  mon avis la solution la plus simple à  implémenter, même s'il faut :
    1) Ecrire le fichier PHP qui va recevoir tes données post et les écrire dans ton fichier Liste.plist sur ton serveur (quoique ça c'est pas méchant même si t'es pas un as du PHP, y'a quasiment besoin que de la méthode file_put_contents qui fait tout ça en une ligne)
    2) Adapter ton code Cocoa pour ne pas faire du writeToURL mais préparer une NSURLRequest vers cette URL en lui fournissant ta représentation textuelle de ton tableau (le texte de ton plist) dans les données POST
    3) Penser un fois que tout marche à  sécuriser le tout pour pas qu'un petit malin qui découvrirait le nom de ton fichier "writePlist.php" puisse s'amuser avec pour écrire tout et n'importe quoi dans ton Liste.plist à  la place de tes données.
  • al33eral33er Membre
    06:01 modifié #3
    Merci beaucoup ALi,
    Je vais explorer cette piste. Mais pour ma gouverne, ça sert  à  quoi la commande WriteToIUrl ?

    Alexandre.
  • AliGatorAliGator Membre, Modérateur
    06:01 modifié #4
    Très bonne question tiens.
    A mon avis ça ne marche que pour 2 cas de figure (ou alors y'a des cas que je vois pas et je veux bien qu'on me dise lesquels) :

    1) Lorsque l'URL représente une URL locale (genre "file://...")

    2) Lorsque l'URL pointe sur un serveur WebDav, c'est à  dire un serveur qui supporte l'écriture de fichiers. D'une part ces types de serveurs sont rares, à  part besoins spécifiques on n'en croise pas à  tous les coins de rue... et d'autre part (et aussi pour cette raison) perso je n'ai jamais eu à  en utiliser " je connais juste leur existence et principe, sans plus " donc je ne saurais pas dire si un simple "writeToURL" suffit à  pouvoir écrire ton fichier.

    Mais bon dans ton cas vu que c'est en l'occurrence sur le serveur d'un hébergeur de page persos que tu veux stocker ton fichier, je ne connais à  ce jour aucun hébergeur qui propose du WebDAV (du moins gratuitement) et ça serait un peu le bazooka pour tuer une mouche quand dans ton cas tu peux te dépatouiller avec un simple script PHP qui fait l'écriture pour toi côté serveur.
Connectez-vous ou Inscrivez-vous pour répondre.