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

Langages serveur Discussion :

java php avec apostrophe


Sujet :

Langages serveur

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 30
    Points : 45
    Points
    45
    Par défaut java php avec apostrophe
    Bonjour,

    jai réalisé une application en java qui stocke des donnés sous forme de chaînes sur un serveur. Coté serveur les requêtes sont gérées en PHP.

    Coté java pour l'envoi des données les chaînes de caractères sont d'abord rangées dans deux listes clé-valeur
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     static List<String> keys;
        static List<String> values;

    Puis la méthode POST est utilisée
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    public static String get(String url) throws IOException {
     
            String source = "";
            URL oracle = new URL(url);
            URLConnection yc = oracle.openConnection();
            BufferedReader in = new BufferedReader(new   InputStreamReader(yc.getInputStream()));
            String inputLine;
     
            while ((inputLine = in.readLine()) != null) {
                source += inputLine;
            }
            in.close();
            return source;
        }
     
        public static String post(String adress) throws IOException {
            String result = "";
            OutputStreamWriter writer = null;
            BufferedReader reader = null;
            try {
    //encodage des paramètres de la requête
                String data = "";
                for (int i = 0; i < keys.size(); i++) {
                    if (i != 0) {
                        data += "&";
                    }
                   // data+=keys.get(i)+"="+values.get(i);
                   data += URLEncoder.encode(keys.get(i), "UTF-8") + "=" + URLEncoder.encode(values.get(i), "UTF-8");
                }
    //création de la connection
                URL url = new URL(adress);
                URLConnection conn = url.openConnection();
                HttpURLConnection urlCon = (HttpURLConnection) conn;
                urlCon.setRequestMethod("POST");
                urlCon.setDoOutput(true);
    //envoi de la requête
                writer = new OutputStreamWriter(urlCon.getOutputStream());
                writer.write(data);
                writer.flush();
     
    //lecture de la réponse
                reader = new BufferedReader(new InputStreamReader(urlCon.getInputStream()));
                String ligne;
                while ((ligne = reader.readLine()) != null) {
                    result += ligne + "\n";
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
     
                try {
                    writer.close();
                } catch (Exception e) {
                }
                try {
                    reader.close();
                } catch (Exception e) {
                }
            }
            return result;
        }

    Coté serveur, on récupère les données du POST comme ceci
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    if(!$uploadOver && $uploadEnabled)
    		{//le post doit être lu
    	   $format='val%05d';
               $rank=sprintf($format,$index);
                  if(isset ($_POST[$rank]))
    				{
    					echo " j'ai reçu ceci : \r\n".$_POST[$rank];
    					$uploadEntry= new DicEntry($_POST[$rank]) ;
    					$index++;
    				}else
    				{
    					$uploadOver=true;  
    			}
    		}

    et là, stupeur ! Si la chaîne envoyée dans values contient par exemple :

    s'apercevoir
    l'écho de PHP renvoi :

    j'ai reçu ceci : s\'apercevoir (avec ce mal venu antislash)
    Ensuite quand on relit le fichier où PHP a rangé les données, on retrouve cet anti-slash dans le programme java.
    À titre indicatif, la relecture du fichier de données depuis java se fait comme suit:
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    URL url = new URL(urlString);
            URLConnection conn = url.openConnection();
            serverReader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String lineServer = null;
            String str = null;
            //System.out.println("on a passé urlconn");
            if (!fIn.exists()) {
                fIn.createNewFile();
            }
     
            localReader = new BufferedReader(new InputStreamReader(new FileInputStream(dicFileName), "UTF-8"));

    Merci pour toute aide pour comprendre ce phénomène.

  2. #2
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Bonjour,

    Pour le comportement, vous aurez sans doute plus de réponses sur le forum Java. Il y a d'ailleurs surement moyen de régler ça côté Java.

    Mais il faut peut-être faire un traitement côté PHP et là c'est sur le forum PHP qu'il faudrait poser la question.

    Je ne sais pas trop où vous rediriger (en tout cas, ne faites pas des doublons ).

Discussions similaires

  1. Consommer un webservice java depuis PHP avec un wsdl
    Par crazymad dans le forum Services Web
    Réponses: 1
    Dernier message: 04/05/2011, 17h29
  2. Interopabilités Java <--> PHP avec RSA
    Par Foub dans le forum Sécurité
    Réponses: 6
    Dernier message: 17/07/2009, 10h58
  3. [PHP-JS] Problème avec les noms avec apostrophes
    Par cyberdevelopment dans le forum Langage
    Réponses: 10
    Dernier message: 07/08/2006, 14h35
  4. [Système] Interfacer PHP avec Java
    Par guipom dans le forum Langage
    Réponses: 2
    Dernier message: 21/03/2006, 18h35

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