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

GWT et Vaadin Java Discussion :

Serveur local et distant se comportent différemment sur POST


Sujet :

GWT et Vaadin Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 30
    Par défaut Serveur local et distant se comportent différemment sur POST
    Bonjour,
    config UBUNTU 10.4 GWT2.0.4 PHP5.2.9 sur serveur hébergeur et 5.3.2-1 en local
    je cherche à passer des données pour un dictionnaire basque français en ligne sous forme de json string par POST.

    Voici le code, un peu long mais tout le problème se passe dès les premières lignes

    Code : 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
     
    	public String toJSON() {
    		JSONObject jsonObj = new JSONObject();
    		jsonObj.put("a", new JSONString(this.entryBox.getText()));
    		jsonObj.put("b", new JSONString(this.translationInputBox.getText()));
    		jsonObj.put("c", new JSONString(currentWordId));
     
    		return (jsonObj.toString());
    	}
    	boolean registerWord(boolean newWord) {
    		String url = new String("");
    		if (newWord) {
    			url = URL.encode(serverUrl + "executeWordRegisterRequest.php");
    			// Window.alert("Attention, vous allez créer une nouvelle définition dans le dictionnaire avec le texte de la zone de saisie!");
    		} else {
    			url = URL.encode(serverUrl + "executeWordUpdateRequest.php");
    			// Window.alert("Attention, vous allez écraser la définition du dictionnaire avec le texte de la zone de saisie!");
    		}
    		String json = toJSON();
    		Window.alert("JSONOOBJect= : "+json);
     
    		// Send request to server and catch any errors.
    		RequestBuilder builder = new RequestBuilder(RequestBuilder.POST, url);
    		try {
    			builder.setHeader("Content-Type",
    					"application/x-www-form-urlencoded");
    			Request request = builder.sendRequest("data=" + json,
    					(RequestCallback) new RequestCallback() {
     
    						public void onError(Request request, Throwable exception) {
    							displayError("Couldn't register word");
    						}
     
    						public void onResponseReceived(Request request,
    								Response response) {
    							if (200 == response.getStatusCode()) {
    								Window.alert(response.getText());
    							} else {
    								Window.alert("Error: HttpRequest to send the word failed"
    												+ response.getStatusCode());
    							}
    						}
    					});
    		} catch (RequestException e) {
    			displayError("Error in sending request to register a word");
    		}
    		return false;
    	}
    Quand le code s'exécute sur le serveur Apache local , tout va bien et la première window.alert("message") me donne bien un chaîne de la forme
    {'"a": "xakur", "b":"chien","c":"1235"}
    par contre sur le serveur de mon hébergeur, j'obtiens:
    {\"a\":\"xakur\", \"b\":\"chien\",\"c\":\"1235\"}
    et dans ce cas, le programme PHP (voir code ci-dessous ) et notamment la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $jsonArray=json_decode($_POST['data'],true);
    ne l'interprète pas correctement!
    Quelqu'un pourrrait-il me dire d'où provient cette différence de comportement et comment s'en affranchir?

    Code : 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
    <?php
    header('Content-Type: text/plain ;charset=utf-8'); 
    $jsonArray= array();
     
     
    $jsonArray=json_decode($_POST['data'],true);
     
    echo "voici ce que je recois".$_POST['data']."et json array a:  ".$jsonArray['a']."  et json array b: ".$jsonArray['b'];
    // Establish a connection to  MySQL
    require_once 'login.php';
    $con = mysql_connect($db_host, $db_user, $db_pswd);
    // on crée la requête SQL
    $sql =sprintf( "INSERT INTO words VALUES('%s','%s',null)",
            mysql_real_escape_string($jsonArray['a']),
            mysql_real_escape_string($jsonArray['b']));
    // on sélectionne la base
    mysql_select_db($db,$con);
    // on envoie la requête
    $resp = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
    if ($resp) {
        echo(("Le mot a été correctement enregistré"));
    }else {
        echo ("Problème de connexion à la base de données. Il se peut que le mot n'ait pas été enregistré.");
    }
    // on ferme la connexion à mysql
    mysql_close();
    ?>

  2. #2
    Membre émérite

    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Septembre 2010
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information

    Informations forums :
    Inscription : Septembre 2010
    Messages : 450
    Par défaut
    Ton hébergeur fait un échappement des chaines de caractères pour que les caractères tels que les guillemets ne soient pas interprétés.
    Si vous moinsez, merci de répondre pour argumenter!
    Ma présentation

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

    Informations forums :
    Inscription : Octobre 2010
    Messages : 30
    Par défaut
    Merci.
    J'ai vaguement regardé la page que tu pointes. Pour ce soir ça me prend un peu la tête car j'ai trop fait la fête hier.
    Je vais regarder ça calmement demain. J'imagine que je dois pouvoir paramétrer mon serveur pour avoir un fonctionnement identique sur les deux serveurs (par exemple échapper) et faire en sorte que MySql sache s'en débrouiller des deux cotés également.

  4. #4
    Membre émérite

    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Septembre 2010
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information

    Informations forums :
    Inscription : Septembre 2010
    Messages : 450
    Par défaut
    Je pense plutôt que c'est ton application qui doit gérer correctement le fait que le serveur échappe ou non les chaines de caractères.

    Mais bon, effectivement, ça marchera aussi si tu règle ton serveur. C'est juste que pour moi, c'est prendre le problème à l'envers.
    Si vous moinsez, merci de répondre pour argumenter!
    Ma présentation

Discussions similaires

  1. Différence de traitement du CSS entre serveur local et distant !
    Par FlorentA dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 24/07/2013, 10h42
  2. Action sur serveur local depuis server distant
    Par Camomille dans le forum Langage
    Réponses: 1
    Dernier message: 14/03/2011, 02h22
  3. Acces local et distant d'une servlet sur serveur JBoss
    Par ouaqa dans le forum Wildfly/JBoss
    Réponses: 1
    Dernier message: 15/04/2009, 15h58
  4. Réponses: 2
    Dernier message: 15/06/2008, 16h02
  5. Récupération de donnée serveur local et distant
    Par sebaaas dans le forum Langage
    Réponses: 1
    Dernier message: 04/12/2007, 23h51

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