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 :

objets json reception post en php


Sujet :

Langages serveur

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 29
    Points : 21
    Points
    21
    Par défaut objets json reception post en php
    Bonsoir j'essaye de faire une liaison php/ java grâce à mes objets json.

    Pour cela j'ai donc envoyer mes objets json en java voilà le code :
    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
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		JSONObject obj = new JSONObject();
    		obj.put("name", "mkyong.com");
    		obj.put("age", new Integer(100));
     
    		System.out.print(obj);
     
    		try {
    		URL recup = new URL("http://localhost/json_good/recup.php");
    		java.net.HttpURLConnection connexion = (HttpURLConnection)recup.openConnection();
    		connexion.setDoOutput(true); // Pour pouvoir envoyer des données
    		connexion.setRequestMethod("POST");
     
            //envoi de la requête
    	OutputStreamWriter writer = null;
            writer = new OutputStreamWriter(connexion.getOutputStream());
            writer.write(obj.toString());
            writer.flush();
     
    		} catch (Exception e) {
    			System.out.println(" exception : " + e.getMessage());
    		}
     
    	}
     
    }

    et j'essaye donc de les recevoir en php voilà ce que j'ai essayé :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(isset($HTTP_RAW_POST_DATA)){
    echo 'OK'
    $data = json_decode($HTTP_RAW_POST_DATA);
    }

    Cela ne fonctionn e pas et je comprends pas pourquoi, j'ai sur internet qu'il y avait aussi la balise
    $json = json_decode(file_get_contents("php://input"), true);
    mais je ne cherche pas à extraire mes objets d'un fichier ?

    mais je ne comprends pas

    Pouvez vous me dire pourquoi ma liaison de fonctionne pas ?

    Merci d'avance


    Lucile

  2. #2
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Ca ne "fonctionne pas" est un peu vague.

    Ton code PHP est utilisé ici comme un web service et non pas une page web (c-a-d destinée à être consultée à travers un navigateur). Pour savoir si cela a fonctionné, il faut faire quelque chose avec $data, comme par exemple le stocker dans une base de donnée. Tu seras vite fixée si ca marche ou pas. L'autre solution, puisque que je vois un "echo 'OK'" traîner dans le code (manque le point virgule donc erreur de syntaxe de tt façon), c'est d'afficher le corps de la réponse HTTP depuis le code java (toute cette partie du code semble absent) et tu devrais avoir "OK" dans la console.
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 29
    Points : 21
    Points
    21
    Par défaut
    Je ne pourrai donc jamais afficher directement mon objet json sur ma page ?
    Comment puis je afficher le corps de la réponse HTTP depuis java, je ne comprends pas ...
    Je vais essayer avec ma base de données. Mais dans mon objet json j'ai plusieurs données comment je fais pour les selectionner à partir de $data?
    Bon et sinon j'ai essayé avec HTTP_RAW mais ma page de recuperation ne reconnait pas cette balise

  4. #4
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    $HTTP_RAW_POST_DATA ne marche qu'avec une directive spéciale du serveur dans php.ini. Si tu ne connais pas ni ne peut agir sur cette configuration, le mieux est encore d'utiliser file_get_contents("php://input") à la place.

    Pour ce qui est de la réponse HTTP :
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
                  //#1 envoi de la requête
                  writer = new OutputStreamWriter(connexion.getOutputStream());
                  writer.write(donnees);
                  writer.flush();
     
                  //#2 lecture de la réponse
                  reader = new BufferedReader(new InputStreamReader(connexion.getInputStream()));
                  String ligne;
                  while ((ligne = reader.readLine()) != null) {
                      System.out.println(ligne);
                  }
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 29
    Points : 21
    Points
    21
    Par défaut
    voilà mon nouveau code :
    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
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		JSONObject json = new JSONObject();
    		json.put("json", "mkyong.com");
    		//obj.put("age", new Integer(100));
    		System.out.print(json);
     
    		try {
    		URL recup = new URL("http://localhost/json_good/recup_v2.php");
    		java.net.HttpURLConnection connexion = (HttpURLConnection)recup.openConnection();
    		connexion.setDoOutput(true); // Pour pouvoir envoyer des données
    		connexion.setRequestMethod("POST");
     
            //envoi de la requête
    		OutputStreamWriter writer = null;
            writer = new OutputStreamWriter(connexion.getOutputStream());
            //conversion en chaine
            writer.write(json.toString());
            writer.flush();
     
            //#2 lecture de la réponse
    		BufferedReader reader=null;
            reader = new BufferedReader(new InputStreamReader(connexion.getInputStream()));
            String ligne;
            while ((ligne = reader.readLine()) != null) {
                System.out.println(ligne);}
     
    		} catch (Exception e) {
    			System.out.println(" exception : " + e.getMessage());
    		}


    et voilà la réponse de la console :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    {"json":"mkyong.com"}<br />
    <b>Warning</b>:  json_decode() expects parameter 1 to be string, object given in <b>C:\Users\lucile\Desktop\PROJET 2A\logiciels\serveruXAMPPdossier\htdocs\json_good\recup_v2.php</b> on line <b>4</b><br />
    voilà mon code php :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    $raw_json = json_decode(file_get_contents('php://input'));
    $data=json_decode($raw_json);
    mysql_query('insert into tb_user(username) values ('.$data['json'].')');
    ?>

    Avez vous uen idée d'où vient mon problème ?

  6. #6
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Cela est suffisant pour avoir "OK" dans la console. Rien d'autre.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php
    $data = json_decode(file_get_contents('php://input'));
    //A ce stade, $data est un objet (et non pas un simple String), dont tu feras ce que tu souhaites coté serveur...
    echo "OK";
    ?>
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 29
    Points : 21
    Points
    21
    Par défaut
    Bonjour j'ai testé ma liaison. Cela marche très bien, tout s'affiche dans la console eclipse. Le soucis est que je n'arrive pas à écrire dans ma base de données et je ne comprends pas pourquoi ?Avez vous une idée ?

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    include('config.php');
    //On se connecte a la base de donnee
    mysql_connect('localhost', 'root', '');
    mysql_select_db('tangram');
    if(mysql_select_db('tangram'))
    echo 'OK';
    $json=file_get_contents("php://input");
    var_dump(json_decode($json));
    $raw_json = json_decode($json,true);
    echo $raw_json["json"];
    $var=$raw_json["json"];
    if(mysql_query("insert into tb_user(name, surname, school) values ('','$var','$var')"))
    echo ' ECRITURE OK <br />';

    Merci d'avance,

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 22/03/2007, 11h37
  2. post action php
    Par osoumayaj dans le forum Langage
    Réponses: 3
    Dernier message: 19/09/2006, 12h56
  3. Appel d'une page avec la methode POST depuis php
    Par QuantuX dans le forum Langage
    Réponses: 9
    Dernier message: 04/08/2006, 12h45
  4. Découper un code HTML qui demande un post vers PHP
    Par Liondd dans le forum Langage
    Réponses: 6
    Dernier message: 22/04/2006, 03h15

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