IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Utilisation de %string%


Sujet :

Android

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2012
    Messages : 4
    Points : 8
    Points
    8
    Par défaut Utilisation de %string%
    je n'ai rien trouvé dans les livres et internet (java et android) pour me permettre de comprendre l'utilisation des %string% hormis les Path Windows

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	String headerBase = "HTTP/1.1 %code%\n"+
    	"Server: Bolutions/1\n"+
    	"Content-Length: %length%\n"+
    	"Connection: close\n"+
    	"Content-Type: text/html; charset=iso-8859-1\n\n";
     
    	String header = headerBase;
    	header = header.replace("%code%", "403 Forbidden");
    pour info, ce serveur fonctionne parfaitement ...avec de nombreux %xxxx% !
    ou est la solution ?

  2. #2
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Je ne vois rien de spécial....
    Ca pourrait être "TARTEMPION_ICI" que ce serait pareil....
    Du moment que la chaine ne risque pas d'être présente ailleurs et que le replace utilise bien la même chaine...

    Juste une question .... Ou as tu vu un code pareil ?

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2012
    Messages : 4
    Points : 8
    Points
    8
    Par défaut un code pareil
    Merci NICOMAN pour tes informations
    voici le lien vers le source en question
    http://http://code.google.com/p/android-webserver/
    Ce code semble vraiment particulier ou bien je n'ai peut-être pas encore trouvé la bonne méthode pour chercher sur Internet pour comprendre par exemple, les lignes 2 à 5 de l'extrait de code cité ... comment interpréter "Content-Length: String" etc ? Je n'ai pas su trouver d'infos pertinentes sur Android Developers. C'est uniquement sur cette partie du code ou j'éprouve tant de mal dans l'interprétation. Je ne doit pas être le seul car une application (TimeLapse) utilisant ce serveur, concerve intacte cette partie.

  4. #4
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Dans une réponse HTTP, il y a des headers.... c'est du text ASCII....
    Content-Length, Server, Content-Type, ...

    La méthode la plus classique est un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    PrintStream output = ....;
    for (Header h : allheaders) {
        output.print(h.getName());
        output.print(": ");
        output.println(h.getValue());
    }
    output.println();
    Leur méthode est de construire une chaîne de tous les headers, et (j'imagine de l'écrire en une fois dans l'output).
    Donc ils se font une chaine de base:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    String headerBase = "HTTP/1.1 %code%\n"+
    	"Server: Bolutions/1\n"+
    	"Content-Length: %length%\n"+
    	"Connection: close\n"+
    	"Content-Type: text/html; charset=iso-8859-1\n\n";
    Et il remplacent A LA MAIN les parties nécessaires par les bonnes valeurs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    headerBase.replace("%code%", codeDeRetour);
    headerBase.replace("%length%", dataLength);
    ....
    L'utilisation de balises "%" autour ne sert à rien, sauf à s'assurer que ce texte ne sera pas présent ailleurs....
    Ils auraient très bien pu utiliser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    String headerBase = "HTTP/1.1 TARTEMPION\n"+
    	"Server: Bolutions/1\n"+
    	"Content-Length: SUPERLONGUEUR\n"+
    	"Connection: close\n"+
    	"Content-Type: text/html; charset=iso-8859-1\n\n";
    headerBase.replace("TARTEMPION", codeDeRetour);
    headerBase.replace("SUPERLONGUEUR", dataLength);
    Pour être honnête, je trouve cette manière de faire très laide... mais bon, c'est mon point de vue. C'est aussi assez lent....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    StringBuilder headerBuilder = new StringBuilder(BASE_LENGTH);
    headerBuilder.append("HTTP/1.1 ").append(codeDeRetour).append("\n");
    headerBuilder.append("Server: Bolutions/1\n");
    headerBuilder.append("Content-Length: ").append(dataLength).append("\n");
    headerBuilder.append("Connection: close\n");
    headerBuilder.append("Content-Type: text/html; charset=iso-8859-1\n\n");
    ...
    Éviterai déjà pas mal d'utilisation CPU.... Et d'allocations mémoire (si le BASE_LENGTH est suffisamment gros).

    Bref...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utilisation de string
    Par Jiyuu dans le forum VB.NET
    Réponses: 6
    Dernier message: 16/03/2007, 19h10
  2. pbm d'utilisation de string
    Par assif dans le forum C++
    Réponses: 3
    Dernier message: 21/10/2006, 13h42
  3. pb d'utilisation de string::unsetf(ios::skipws)
    Par alskaar dans le forum C++
    Réponses: 3
    Dernier message: 08/10/2006, 11h40
  4. [C#] ValueMember sans utiliser de string
    Par Jinroh77 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 10/08/2006, 11h26
  5. Réponses: 7
    Dernier message: 25/11/2005, 17h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo